2014-10-19 103 views
0

我正在使用以下代碼將DataTable寫入文本文件。StreamWriter.WriteLine不寫入新行

Using sbData As New StreamWriter(fileName, False, Encoding.UTF32) 
    sbData.Write(String.Join("\t", dataTable.Columns.Cast(Of DataColumn)().Select(Function(arg) arg.ColumnName.Trim()))) 
    sbData.WriteLine() 
    For Each dataRow As DataRow In dataTable.Rows 
     sbData.Write(String.Join("\t", dataRow.ItemArray.Select(Function(arg) arg.ToString().Trim()))) 
     sbData.WriteLine() 
    Next 
    sbData.Flush() 
    sbData.Close() 
End Using 

數據正在被寫入到文本文件中,但是\ t(製表符)沒有工作,也沒有WriteLine。 而不是標籤我在文本文件中獲得「\ t」,並且所有內容都是連續的。 任何人有任何想法這裏錯了什麼?

回答

0

問題解決: 對於選項卡,我使用了ControlChars.Tab,它完美地工作。 對於WriteLine我想這與編碼有關。我從UTF32切換到Unicode,它開始工作。

將試圖找到究竟是問題,但現在的問題是解決了:-)

2

"\t"只有在大括號語言的作品,如C#,你必須在VB.NET使用vbTab。

使用utf32只是很奇怪,而WriteLine()似乎不起作用的原因。無論你用什麼程序來查看文件,都不會期望它,並會猜測錯誤的編碼。也是您在「\ t」中看到空格的原因。在使用不尋常的編碼時寫入BOM不是可選的。請務必考慮使用Encoding.UTF8,而不是StreamWriter的默認值。

+0

嗨,謝謝你的回覆。我正在使用記事本來讀取txt文件。另外我的應用程序輸出一些瑞典和德國的字符。我不知道他們是否可用UTF8。也許你也可以對此有所瞭解。再次感謝... – 2014-10-20 14:50:54

+0

UTF8編碼Unicode,它知道瑞典語和德語。通過'New Encoding.UTF8(True)'確保記事本始終正確。 – 2014-10-20 14:56:02