我试图摆脱中断数据的文本文件。我解析这个文件,如果我发现一个坏字符,我用一个空格替换它。我的问题是,空间不会覆盖坏字符。相反,该空间写在第10行的第27位。这里发生了什么? 我一直被困在这个看似简单的问题上半天。谢谢。如何用VB.NET中的空格替换文本文件中的'坏字符'
Sub replaceChars(fname As String)
Dim fs As New FileStream(fname, FileMode.Open, FileAccess.ReadWrite)
Dim r As New StreamReader(fs)
Dim w As New StreamWriter(fs)
Dim iChar As Integer = 0
Do Until r.Peek() = -1
iChar = r.Read()
If iChar < 32 Or iChar > 126 Then
If iChar = 13 Or iChar = 10 Then 'cr/lf, continue.
Continue Do
Else 'found a bad char. replace it.
w.Write(Chr(32))
w.Flush()
fs.Flush()
End If
Else
Continue Do
End If
Loop
w.Close()
fs.Close()
End Sub
的FileStream使用缓冲器,4096个字节默认情况下。第一次写入将抵消4096,而不是你希望它会去的地方。您无法使FileStream.Seek()对于文本文件可靠。完成后,将所有内容写入另一个文件File.Replace()。 –
谢谢!我将这些行转换为char数组并替换了数组中的值。然后将char数组转换回字符串。正如你所建议的那样,我用一个临时文件写入,然后将内容从临时文件复制到实际文件。再次感谢。 – user3023401