2012-05-08 79 views
0

我需要使用最小的内存量将字符编码“windows-1252”的非常大的文本文件(通常超过100 MB)转换为UTF8。将大文本文件从特定字符集转换为UTF8

任何人都知道最快/最低的内存开销方式是什么?

我假设一些超高速的StreamReader/StreamWriter组合!

感谢

+1

这怎么能不建设性?这是一个实际的问题。您无法在资源受限的环境中将大文本文件加载到内存中,然后使用File.WriteAllText()。 – krisdyson

回答

3

如果你不想分配你在它的块与"windows-1252"

  • 在同一个迭代与StreamWriter写它通过操作

    • 与StreamReader的第一次读取的所有数据,与指定UTF-8
  • 2

    Encoding.Convert方法上byte[]工作 - 你可以用一个小的缓冲区调用此方法,从原来的文件,然后写入到一个新的文件中读取。如果原始文件使用可变字节编码,则必须非常小心才能在字符边界上读入缓冲区(如果可能)。

    这将根据您选择的缓冲区大小使用尽可能多或尽可能少的内存。