C# で大きなテキスト utf8 (文字バイトが異なる) ファイルをインポートするためのインポーター プログラムを開発しています。20GB のファイルをすべて RAM にロードすると、この解決策は適切ではなく、可能ではありません。ファイルを複数の小さなファイルに分割して処理することをお勧めします。今、私の問題は、処理対象のファイルを分割することです。私の解決策は、ファイルを1行ずつ読み取り、行番号が適切な数である場合はそれらを分割することです。しかし、分割のためにファイルを1行ずつ読み取るのは高速な解決策ではないと思います。分割時間が長い。大きなutf8ファイルを複数のファイルに分割するためのアルゴリズムはありますか?
1 に答える
0
あなたの問題に対する私の提案は以下の通りです。これは、ファイルの分割とファイルの処理を分離してメンテナンスを行うことができるため、関心の分離を念頭に置いて考えました。
- テキストではなくバイナリでファイルを読み取る
- 分割のためにファイルを読み取る必要がないため、行ごとに読み取らないでください。
- シークを使用します。リンクを参照してください。
- 分割されたファイルを完全な行で保存する必要がある場合は、位置を探した後、次の行末文字を検索し、それに応じてファイルを分割します。
- ファイルが分割されたら、ファイルを個別に処理します。
于 2016-11-06T05:59:22.477 に答える