0

最小量のメモリを使用して、文字エンコード「windows-1252」の非常に大きなテキストファイル(通常は100 MB以上)をUTF8に変換する必要があります。

これを行うための最速/最低のメモリオーバーヘッドの方法を知っている人はいますか?

私はいくつかの超高速のStreamReader/StreamWriterの組み合わせを想定しています!

ありがとう

4

2 に答える 2

3

すべてのデータを割り当てたくない場合は、そのチャンクを操作します。

  • 最初にStreamReaderでそれを読みます "windows-1252"
  • 同じ反復で、指定された状態でStreamWriterを使用して書き込みますUTF-8
于 2012-05-08T15:39:16.783 に答える
2

このEncoding.Convertメソッドはで動作しbyte[]ます-小さなバッファでこれを呼び出し、元のファイルから読み取り、新しいファイルに書き込むことができます。元のファイルが可変バイトエンコーディングを使用している場合は、文字境界でのみバッファに読み込むように非常に注意する必要があります(可能な場合)。

これにより、選択したバッファサイズに応じて、必要なだけメモリを使用します。

于 2012-05-08T15:37:40.340 に答える