ファイル全体をメモリにロードせずに、大きなテキストファイルの内容をすぐにアプリケーションに表示したいと考えています。大きな(GB)テキストファイルをすばやく表示するにはどうすればよいですか?
どのように他の人がそうしていますか?
Total Commanderそれをしない驚くべき内部ビューアを持っている素晴らしいツールです。どれくらいの大きさ、瞬時に(または私はそれを時間を計ることができないほど)どんなファイルでも開く。私は12GBファイルで試しました。ファイルを表示する際には、メモリ使用量はほとんどありません(〜100KBのみ)。彼らはどうやって?
SynEdit - 最初にファイル全体を解析するので、テキストが表示されるので、プログラムがフリーズします(分)。
LargeTextFile
スクロールバーのサイズに近似します。プログラムが最終的にファイル全体を読み取るまで数分かかることがあるまで、スクロールバーは連続的に調整されます(縮小します)。トータル・コマンダーと比べると、それは本当に吸う。などによってあなただけのブロックでファイルを読み込むプログラムがフリーズ(私は忍耐(またはラムを持っていなかったとして、それを殺すために持っていた)ようにする仕上げです)
彼らはラインを読んでいないので。彼らは限られた量のBYTESを読む。例えば表示ウィンドウに200文字しか表示できない場合は、一度に200バイトを読み込みます。 –
はい、それは一度にENTIRE行を読み込まなければならないという意味ではありません。ファイルは何バイト/何行かにかかわらず、依然としてバイト列です。読み込んだ200バイトに改行が含まれていない場合は、開始時にX文字を取り除き、X個以上の文字を読み込み、それらを "メモリ内"データの最後に貼り付けることができます。効果的に "スクロール"します。 –
'CreateFileMapping'と' MapViewOfFile'を使ってファイルの生のバイトにすばやくアクセスし、スクロール中にビューを「スライド」させ、必要に応じて各ビューデータ内の行を解析することができます。 –