2013-04-05 55 views
4

我是編程新手,遇到了一個問題,我不知道如何處理它。從文本文件中讀取並更新

我用線

textBox2.Text = System.IO.File.ReadAllText(path); 

從一個文本文件中讀取和TextBox2中粘貼內容。

現在的問題是,我試圖閱讀的文本文件是一個大(幾兆字節)的文本文件。該文本文件包含來自程序的日誌,新的日誌總是添加在文件的底部。
現在我想更新textBox2,如果文本文件更新。但我不知道如何以有效的方式做到這一點。一種方法是再次讀取整個文本文件,但由於文本文件太大,這是一個非常緩慢的過程。

我有興趣找到一種不同的和更快的方式來處理這個問題。我對確切的代碼沒有真正的興趣,我只是希望找出我應該看的方向以及我可以考慮的選擇。

+0

你不想讀的內容到一個文本,你應該閱讀內容到一個列表或在必要時讀入一個RitchText場還規定分隔符是什麼,以及 – MethodMan 2013-04-05 18:42:04

回答

8

好了,兩個明顯的事情,你可以檢查:

如果你跟蹤那些,您應該能夠檢測文件何時發生更改 - 至少具有合理的置信度。

此外,您可以使用FileSystemWatcher來觀察更改。

另外,您可能需要考慮跟蹤您讀到的位置 - 以便您可以通過在文件中找到正確位置來閱讀新數據。

最後,一個TextBox可能不是真正的巨大日誌文件的最佳用戶界面。如果這是一個結構化的日誌文件,那麼最好在UI中表示該結構 - 例如,每個日誌條目的表中有一行,可能帶有過濾選項等。

+0

+1的'FileSystemWatcher' – 2013-04-05 18:44:08

+0

思想:如果每次文件更改時都收到通知,如果它是日誌文件並且每條日誌行都刷新到磁盤上,我可能會收到很多通知。所以,他仍然應該每X秒檢查一次,對吧? – 2013-04-05 18:54:58

+0

謝謝您的回覆。你說:「另外,你可能想考慮跟蹤你讀到的地方 - 所以你可以通過在文件中尋找正確的位置來閱讀新的數據。」 您有任何提示可以做到這一點嗎? – Brick 2013-04-05 18:56:36

1

您可以檢查每個X秒。如果文件改變然後更新,如果沒有,則什麼也不做。您可以保留文件的修改時間以瞭解它是否更改。