我寫的每一行到一個文本文件:system.io.streamwriter的WriteLine
昏暗objWriter作爲新System.IO.StreamWriter(文件名)
For Each x In tofile objWriter.WriteLine(x) Next
objWriter.Close()
它完美的工作唯一的問題是,當它完成它寫在我不想要的文本文件末尾的空行。無論如何,這是一個怎樣的過程?
或者如果不刪除最後一行,只要其空白?
謝謝
我寫的每一行到一個文本文件:system.io.streamwriter的WriteLine
昏暗objWriter作爲新System.IO.StreamWriter(文件名)
For Each x In tofile objWriter.WriteLine(x) Next
objWriter.Close()
它完美的工作唯一的問題是,當它完成它寫在我不想要的文本文件末尾的空行。無論如何,這是一個怎樣的過程?
或者如果不刪除最後一行,只要其空白?
謝謝
肯定有你的文件:
System.IO.File.WriteAllText(filename, string.Join(Environment.NewLine, tofile))
這將作爲當前代碼相同的效果,而不只是用不必浪費時間流你自己。
也是可能的:
System.IO.File.WriteAllLines(filename, tofile)
假設tofile
是字符串的普通數組。
如果由於某種原因,你確實需要直接使用流,只是不要在最後一次迭代使用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
可以轉換爲一個數組,你可以與相關投更換toArray
,當然後
objWriter.Write(String.Join(Environment.NewLine, tofile.toArray()))
更換For Each
循環。
但是,在我看來,至少,文本文件格式不應該如此敏感,以至於被空行弄亂。
我不相信「\ n」將在VB中工作。改用Environment.NewLine。 –
啊,好的。發佈更新。謝謝。 –