我正在将每一行写入一个文本文件:
将 objWriter 调暗为新 System.IO.StreamWriter(filename)
For Each x In tofile objWriter.WriteLine(x) Next
objWriter.Close()
完美的工作唯一的问题是,当它完成时,它会在我不想要的文本文件的末尾写一个空行。无论如何,thair 会绕过这个吗?
或者如果不删除最后一行,只要它是空白的?
谢谢
我正在将每一行写入一个文本文件:
将 objWriter 调暗为新 System.IO.StreamWriter(filename)
For Each x In tofile objWriter.WriteLine(x) Next
objWriter.Close()
完美的工作唯一的问题是,当它完成时,它会在我不想要的文本文件的末尾写一个空行。无论如何,thair 会绕过这个吗?
或者如果不删除最后一行,只要它是空白的?
谢谢
当然有:
System.IO.File.WriteAllText(filename, string.Join(Environment.NewLine, tofile))
这将与您当前的代码具有相同的效果,而不必自己弄乱流。
也可以:
System.IO.File.WriteAllLines(filename, tofile)
假设tofile
是纯字符串数组。
如果由于某种原因您确实需要直接使用 Stream,请不要WriteLine
在最后一次迭代中使用:
For i=1 To tofile.Length
x = tofile(i)
If i<tofile.Length Then
objWriter.WriteLine(x)
Else
objWriter.Write(x)
End If
Next
WriteLine 在每次写入后附加 Environment.NewLine。
因此,您实际上并没有在输出中添加一行。
你可以证明它试图用 StreamReader.Readline() 读回你的文件
WriteLine 方法与 Write 方法基本相同,只是在其参数末尾添加了一个换行符。这导致了这里的问题,因为它也会在最后一行的末尾添加一个换行符,即使它后面没有任何内容。
如果tofile
可以转换为数组,则可以将For Each
循环替换为
objWriter.Write(String.Join(Environment.NewLine, tofile.toArray()))
当然,在替换toArray
相关演员之后。
但是,至少在我看来,文本文件格式不应该敏感到被空行弄乱。