2012-05-15 16 views
0

我寫的每一行到一個文本文件:system.io.streamwriter的WriteLine

昏暗objWriter作爲新System.IO.StreamWriter(文件名)

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

objWriter.Close()

它完美的工作唯一的問題是,當它完成它寫在我不想要的文本文件末尾的空行。無論如何,這是一個怎樣的過程?

或者如果不刪除最後一行,只要其空白?

謝謝

回答

3

肯定有你的文件:

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 
0

在每次寫入後,WriteLine會追加Environment.NewLine。
所以你並不是真的爲你的輸出增加一行。
你可以證明它試圖讀回StreamReader.Readline()

0

WriteLine方法基本上是一樣的Write方法,但增加了一個在其參數結尾的新行字符。這在這裏引起了問題,因爲它會在最後一行的末尾添加一個新的行字符,即使它後面沒有任何字符。

如果tofile可以轉換爲一個數組,你可以與相關投更換toArray,當然後

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

更換For Each循環。

但是,在我看來,至少,文本文件格式不應該如此敏感,以至於被空行弄亂。

+0

我不相信「\ n」將在VB中工作。改用Environment.NewLine。 –

+0

啊,好的。發佈更新。謝謝。 –