2010-10-14 49 views
0

我收到了一些帶有Unix換行符的大型文本文件(我認爲)。我通常在我的文本編輯器中打開小文件並將它們保存爲PC文本文件,但這些文件對於此方法來說太大了。所以我認爲我寫了一個C#程序。convert unix file

我通常使用的是這樣的:

using (TextReader tr = File.OpenText(@"D:\bla.txt")) 
      { 
       string line; 
       while ((line = tr.ReadLine()) != null) 
       { 
        string[] items = line.Split('|'); 

但Unix的換行符引起的問題。我將不勝感激任何建議。謝謝!

基督教

+0

你可以在Visual Studio中打開文件嗎?如果是這樣,它應該彈出其「轉換線結束」對話框。 – 2010-10-14 15:10:37

+1

這個問題可能與unix換行無關。那麼,你真的有什麼問題? – nos 2010-10-14 15:14:56

+0

我可以在文本編輯器如文本板中打開文件。當我試圖挽救他們一切崩潰(VS也有問題)。我記下它與文件大小有關800MB - 18GB – cs0815 2010-10-14 15:19:06

回答

2

Unix換行符不應該導致任何問題TextReader.ReadLine - 它是專門設計來應付任何換行符。從the docs

的線被定義爲字符,隨後是回車(0x000d),換行(0x000a),回車後跟一個換行,Environment.NewLine,或端部的順序流標記。返回的字符串不包含終止回車符和/或換行符。如果已到達輸入流的末尾,則返回的值爲null。

這個靈活的定義包括普通的Unix換行符「\ n」。

我懷疑你的問題在別處。你實際上沒有說過你認爲是由Unix換行符造成的問題。目前出了什麼問題?

+0

最後的目標是批量插入數據 - '\ n'在批量插入過程中會導致問題。我的C#代碼也失敗了...... – cs0815 2010-10-14 15:13:25

+0

@csetzkorn:但是如果你使用TextReader.ReadLine,你將不會看到'\ n'開頭。你確定它不是一個編碼問題嗎?當你說你的C#代碼失敗時,你能更具體嗎? – 2010-10-14 15:27:49