2012-02-27 62 views
-1

我讀使用此 while ((line = f1.ReadLine()) != null) 但是我的程序無法處理的最後一行,它總是有這樣的調試器文件「\ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 .... on和on「 處理這個問題的最佳方法是什麼?如何有NULL字符的字符串時,處理EOF

while ((line = f1.ReadLine()) != null) 
      { 
       doing abc 

       } 

當我運行調試器時,它仍然在循環內部並執行abc。 ofcouse它失敗,因爲沒有什麼行

+4

「我的程序無法處理最後一行」 - 你能描述它「無法處理它」嗎?具體發生了什麼,你想發生什麼? – 2012-02-27 22:36:39

+3

你可以發佈更多的代碼,也許鏈接到你正在閱讀的文件嗎?起初認爲它可能會使緩衝區或某事物達到最大,並且您可能需要使用流來解析文件,一次讀取部分內容。 – cgatian 2012-02-27 22:37:40

+0

它是一個簡單的文件讀取,它假設當它找到一個null時停止。但顯然不是 – 2012-02-27 22:39:26

回答

1

不幸的是,null的字符串:

'\0\0\0\0\0\0\0\0\0\0` 

是不是== null。你可以嘗試這樣的事情:

while(!string.IsNullOrEmpty(line = f1.ReadLine())) 
{ 
    if (line[0]=='\0') { 
    /// strings should rarely start with null, so feel feel to break out of your loop here. 
    } 
    else 
    { 
    // found some real content, so process normally. 
    } 
} 

雖然我不是這些類型的支票的粉絲。希望別人會有更好的建議。

一個更好的問題可能是:爲什麼在逐行讀取文本文件時會出現大量的空值?

+0

給出了文本文件。我不能改變任何事情。當我用記事本++打開txt時,我可以看到最後一行有null null null等等on – 2012-02-27 22:44:57

+0

@JohnRyann剛剛想到我:從技術上講,這使得它不是一個真正的文本文件。即使大部分內容都是文本和控制字符(新行等),但是無論如何,你描述的是二進制數據。這是學校嗎? – 2012-03-14 00:43:56