728x90

 

대용량 파일을 읽어들이기 위해서는 전체적으로 읽어들이는 것과 한 줄씩 읽어들이는 것이 있습니다.

하지만 ReadAllLines으로는 읽을 수 없습니다. 또한 유사한 방법으로는 사용 할 수 없다고 생각합니다.

그 이유는 전체 파일을 문자열 배열의 메모리로 읽으려고 합니다. 우리의 대부분 컴퓨터는 약 8GB ~ 16GB 램을 가지고 있기 때문에 이하의 파일은

가능하나, 이상의 파일은 불가능합니다.

또한 Array 기본 최대 크기는 2GB, 파일의 줄 수보다 많을 경우 한번에 전체적으로 읽을 수 없습니다.

한번에 한줄씩 파일을 읽으면 컴퓨터에 많은 양의 메모리 사용이 필요 없으며, 한줄 읽는 메모리만으로 충분 합니다.

 

using (FileStream fs = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (BufferedStream bs = new BufferedStream(fs))
using (StreamReader sr = new StreamReader(bs))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {

    }
}

 

 

내 컴퓨터 RAM 용량 확인하기
https://clear-sky-sun.tistory.com/62

728x90

+ Recent posts