2012-02-29 18 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(文字列ビルダーに関する) – Christoffer

+1

このコード(読取り部分)は例外をスローしますかRTBを読み込んだときにそれが発生しますか? –

答えて

5

使用RichTextBox.LoadFile

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

私はあなたがStringBuilderにテキスト全体をロードする理由はわかりません。あるいは、大きなファイルをレンダリングするFileStreamLoadFileに渡すこともできます。

+1

これはまた、System.OutOfMemoryExceptionという結果になるのではないかと心配しています。何か案は? –

+0

+1、良い答えです。私は今まで知らない。 –

0

私はあなたが何らかの形で入力ファイルを管理する必要がありますね - いくつかの小さいファイルに分割し、プログラムまたはその部品間を移動しましょう。..

150メガバイトのファイルは異常なことのように聞こえます。たぶん、データ処理のストリームの種類をファイルではなく見てください。

関連する問題