2011-11-22 91 views
1

我已經打了心牆。基本上,這段代碼應該執行並收集文件夾中的所有文本文件(並且最終每隔10秒更新文本框)。 目前,它只會一次從一個或兩個文件中提取文本,將是它。它也不會更新這個文本框3。我想知道是否有人對此有何看法?如何讀取多個文本文件並將它們存儲在TextBox中?

由於我一直在使用這段代碼幾個小時,我不知道我有多清楚。如果您有任何疑問,請隨時詢問。感謝您的期待。

public void read() 
{ 
    string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt", 
            SearchOption.AllDirectories); 

    foreach (string file in filePaths) 
    { 
     TextReader objstream = new StreamReader(file); 

     textBox3.Text = objstream.ReadToEnd(); 

     objstream.Close(); 

     textBox3.Select(textBox3.Text.Length, 0); 
     textBox3.ScrollToCaret(); 

     break; 
    } 
} 
+1

您可以用'+ ='而不是'='來追加下一個流。目前,您正在覆蓋之前的流,無論脫字處在哪裏。 – keyboardP

+0

當你說它沒有更新textbox3時是什麼行爲?它是否不顯示任何數據,它僅顯示來自第一個文件的數據,還是僅顯示最終文件中的數據?我會想象它會是後一種選擇,因爲它看起來每次都會覆蓋文本框內容。 – seanzi

+1

你應該使用'使用'...'使用(TextReader objStream = new StreamReader(file)){...}',那麼你可以省略'Close()'調用(使用finally會破壞對象,這將關閉())。 –

回答

0

代替

textBox3.Text = objstream.ReadToEnd(); 

嘗試

textBox3.Text += objstream.ReadToEnd(); 

編輯1:如果你想刷新這個文本框,不要忘了刷新前清除它的文本。 (textBox3.Text = ""會做)。您也可以將此行放在read()的開頭。

編輯2:刪除break;行中... for each each loop。

+0

感謝EmirAkaydın提供的輸入,但它仍然沒有讀取我的文本框中的所有文件:S – Marshal

+0

基本上(可能會笑)。我正在爲一個醫療保健服務程序寫一個小插件,它允許我基本上在我的c#程序中有一個小論壇聊天。因爲我不知道由於防火牆而使用套接字;我正在使用文本文件。所以使用這個程序的每個人都會創建一個小文本文件並能夠輸入他們各自的文本文件,然後程序將所有的文本文件信息一起拖入一個文本框中。這有意義嗎? – Marshal

+0

呃,這不是正確的方法,你已經知道了。但只要它解決了你的問題,你就可以使用這種方法,知道這不是一個真正的解決方案,而是一個骯髒的解決方法。我只是注意到了這一點;順便說一句。刪除該中斷;在每個循環中行。這可能是你的問題。 –

1

也可以嘗試

textBox3.AppendText(objstream.ReadToEnd()); 

有一點要記住這裏雖然是文件的編碼。如果文件編碼不是UTF-8,它可能在文本框和文本編輯器中以不同的方式顯示。

希望這有助於

+0

。我正在爲一個醫療保健服務程序寫一個小插件,它允許我基本上在我的c#程序中有一個小論壇聊天。因爲我不知道由於防火牆而使用套接字;我正在使用文本文件。所以使用這個程序的每個人都會創建一個小文本文件並能夠輸入他們各自的文本文件,然後程序將所有的文本文件信息一起拖入一個文本框中。這有意義嗎? – Marshal

2

如果你並不真的需要這麼多的流染指,我只是使用上有System.IO.File靜態類的方法來讀取和返回的所有文本。使用這個和AppendText你基本上可以把它合併成一個語句。不過,我會建議在文件讀取時在其中放入一些異常檢查。

string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt", SearchOption.AllDirectories); 
foreach (string file in filePaths) 
    textBox3.AppendText(System.IO.File.ReadAllText(file)); 
相關問題