我正在尝试修改6 gig文本文件(SQL脚本)中的特定行。所以我用IO.StreamReader.ReadLine
读了它并用IO.StreamWriter.WriteLine
写入一个新文件。如果该行符合某个条件,我会在写它之前对其进行修改。
问题是,生成的文件正好是原始文件大小的一半(1.999582 ...)...
我正在尝试使用以下方法确保编码相同:
sw = New IO.StreamWriter(NewFilepath, False, sr.CurrentEncoding)
但它没有什么区别,新文件的大小只有旧文件的一半......
答案 0 :(得分:1)
您在哪里设置StreamReader的编码sr
?如果您没有明确地这样做,并且如果您在执行文件的任何读取之前设置StreamWriter的编码(我的最佳猜测),那么StreamReader的CurrentEncoding
可能会更改(它从源自动检测)文件)。
来自StreamReader.CurrentEncoding
当前阅读器使用的当前字符编码。价值 在第一次调用任何Read方法后可以有所不同 StreamReader,因为编码自动检测直到第一次才完成 调用Read方法。
要确定编码,您可以使用StreamReader读取文件的第一行,然后执行:
sw = New IO.StreamWriter(NewFilepath, False, sr.CurrentEncoding)