0

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

将 objWriter 调暗为新 System.IO.StreamWriter(filename)

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

objWriter.Close()

完美的工作唯一的问题是,当它完成时,它会在我不想要的文本文件的末尾写一个空行。无论如何,thair 会绕过这个吗?

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

谢谢

4

3 回答 3

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
于 2012-05-15T12:20:34.683 回答
0

WriteLine 在每次写入后附加 Environment.NewLine。
因此,您实际上并没有在输出中添加一行。
你可以证明它试图用 StreamReader.Readline() 读回你的文件

于 2012-05-15T12:19:30.017 回答
0

WriteLine 方法与 Write 方法基本相同,只是在其参数末尾添加了一个换行符。这导致了这里的问题,因为它也会在最后一行的末尾添加一个换行符,即使它后面没有任何内容。

如果tofile可以转换为数组,则可以将For Each循环替换为

objWriter.Write(String.Join(Environment.NewLine, tofile.toArray()))

当然,在替换toArray相关演员之后。

但是,至少在我看来,文本文件格式不应该敏感到被空行弄乱。

于 2012-05-15T12:21:30.473 回答