0

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

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

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

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

但这并没有什么区别,新文件的大小是旧文件的一半...

4

1 回答 1

1

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

从 MSDN 上StreamReader.CurrentEncoding

当前阅读器使用的当前字符编码。在第一次调用 StreamReader 的任何 Read 方法后,该值可能不同,因为在第一次调用 Read 方法之前不会进行编码自动检测。

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

sw = New IO.StreamWriter(NewFilepath, False, sr.CurrentEncoding)
于 2013-04-12T13:49:24.400 回答