逐行复制文本文件vb.net的一半大小?

时间:2013-04-09 21:48:32

标签: vb.net streamreader streamwriter file-encodings

我正在尝试修改6 gig文本文件(SQL脚本)中的特定行。所以我用IO.StreamReader.ReadLine读了它并用IO.StreamWriter.WriteLine写入一个新文件。如果该行符合某个条件,我会在写它之前对其进行修改。

问题是,生成的文件正好是原始文件大小的一半(1.999582 ...)...

我正在尝试使用以下方法确保编码相同:

sw = New IO.StreamWriter(NewFilepath, False, sr.CurrentEncoding)

但它没有什么区别,新文件的大小只有旧文件的一半......

1 个答案:

答案 0 :(得分:1)

您在哪里设置StreamReader的编码sr?如果您没有明确地这样做,并且如果您在执行文件的任何读取之前设置StreamWriter的编码(我的最佳猜测),那么StreamReader的CurrentEncoding可能会更改(它从源自动检测)文件)。

来自StreamReader.CurrentEncoding

上的MSDN
  

当前阅读器使用的当前字符编码。价值   在第一次调用任何Read方法后可以有所不同   StreamReader,因为编码自动检测直到第一次才完成   调用Read方法。

要确定编码,您可以使用StreamReader读取文件的第一行,然后执行:

sw = New IO.StreamWriter(NewFilepath, False, sr.CurrentEncoding)