system.io.streamwriter writeline

时间:2012-05-15 12:13:01

标签: vb.net streamwriter

我正在将每一行写入文本文件:

  

Dim objWriter As New System.IO.StreamWriter(filename)

        For Each x In tofile
             objWriter.WriteLine(x)
         Next  
     

objWriter.Close()

完全正常工作唯一的问题是,当它完成时,它在文本文件的末尾写了一个我不想要的空行。无论如何都是围绕这个?

或者如果没有删除最后一行,只要它的空白?

由于

3 个答案:

答案 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后,当然。

但是,至少在我看来,文本文件格式不应该太敏感而不能被空白线弄乱。