我正在将每一行写入文本文件:
Dim objWriter As New System.IO.StreamWriter(filename)
For Each x In tofile objWriter.WriteLine(x) Next
objWriter.Close()
完全正常工作唯一的问题是,当它完成时,它在文本文件的末尾写了一个我不想要的空行。无论如何都是围绕这个?
或者如果没有删除最后一行,只要它的空白?
由于
答案 0 :(得分:3)
当然有:
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
答案 1 :(得分:0)
WriteLine在每次写入后附加Environment.NewLine 所以你并没有真正为你的输出添加一行 你可以证明它试图用StreamReader.Readline()
读回你的文件答案 2 :(得分:0)
WriteLine方法与Write方法基本相同,但在其参数的末尾添加了一个新的行字符。这导致了这里的问题,因为它会在最后一行的末尾添加一个新的行字符,即使它后面没有任何内容。
如果可以将tofile
强制转换为数组,则可以用
For Each
循环
objWriter.Write(String.Join(Environment.NewLine, tofile.toArray()))
当用相关的演员替换toArray
后,当然。
但是,至少在我看来,文本文件格式不应该太敏感而不能被空白线弄乱。