2012-02-29 2 views
5

서식있는 텍스트 상자에 150MB 텍스트 파일을 읽으려고합니다.서식있는 텍스트 상자에 큰 (150MB) 텍스트 파일 읽기

현재 StreamReader를 사용하여 파일의 각 줄을 반복하고 모든 줄을 StringBuilder 인스턴스에 추가합니다.

작은 파일에도 적용되지만 대용량 파일을 읽으려고 할 때 System.OutOfMemory 예외가 발생합니다.

150MB 파일을 읽는 데 아무런 문제가 없습니다. 실제 메모리가 많이 있으며 Windows 32 비트 응용 프로그램 주소 공간 내에 있습니다.

여기에있는 사람이이 작업을 수행하는 방법을 알고 있다면 대단히 감사하겠습니다.

끝에 코드를 첨부하겠습니다.

감사합니다.

StringBuilder sb = new StringBuilder(); 
using (StreamReader sr = new StreamReader(fileLocation)) 
{ 
    string line; 
    while ((line = sr.ReadLine()) != null) 
    { 
     sb.AppendLine(line); 
    } 
    } 

return sb; 
+0

+1, 좋은 질문입니다. –

+1

스택 추적을 게시 할 수 있습니까? 그래서 우리는 예외가 발생한 곳을 정확하게 볼 수 있습니다. 또한 관련이있을 수 있습니다 : http://stackoverflow.com/questions/363680/stringbuilder-for-string-concatenation-throws-outofmemoryexception (string builder 관련) – Christoffer

+1

이 코드 (읽기 부분)가 예외를 throw하는지 명확히하십시오. 또는 RTB를로드 할 때 그런 일이 발생합니까? –

답변

5

사용 RichTextBox.LoadFile

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.loadfile.aspx

나는 당신이 StringBuilder에 전체 텍스트를로드 할 이유를 모르겠어요. 또는 FileStreamLoadFile으로 전달하면 큰 파일이 렌더링됩니다.

1백50메가바이트 파일은 비정상적인 것 같은 소리 .. 여러 작은 파일로 분할 및 프로그래밍 정도 부품 사이를 탐색 가정 해 봅시다 -

+1

이 또한 System.OutOfMemoryException이 발생합니다. 어떤 아이디어? –

+0

+1, 좋은 답변입니다. 나는 지금까지 모른다. –

0

난 당신이 어떻게 든 입력 파일을 관리해야 같아요. 어쩌면 파일 하나보다는 스트림 종류의 데이터 처리를 살펴봐야 할 것입니다.