2010-01-08 100 views
0

我正在嘗試爲我們的消息傳遞(WCF)組件構建一個小工具。這個想法是基於先前的跟蹤日誌給出響應以進行測試。由於SOAP消息非常大,我們傾向於擁有巨大的跟蹤文件。我想要做的就是從最後一行開始逐行讀取(從最新到最舊),以便構建我的迴應。任何人都有任何想法我怎麼能在.NET中做到這一點?看來FileStream類只支持正向讀取。從頭開始讀取文件

+0

另請參見:[獲取超大文本文件的最後10行> 10GB c#](http://stackoverflow.com/questions/398378 ),[如何用C#中的迭代器反向讀取文本文件](http://stackoverflow.com/questions/452902) – hippietrail 2012-11-05 19:14:09

回答

2

如果這些文本文件,我有ReverseLineReader(或一些這樣的)在MiscUtil,你可能會發現有用的。它只支持某些編碼(Unicode,UTF-8或任何固定的單字節編碼),但希望這對你來說已經足夠了。

它通過一個迭代器返回字符串,所以你可以使用LINQ來限制你讀多少等,並且它們被懶惰地讀取。

我假設你實際上並不想讀整個文件?如果你這樣做,我會建議使用File.ReadAllLines,然後扭轉由此產生的陣列:)

+0

謝謝。我會看看它。但是,這個想法是獲得關於如何實現它自己的指導,而不是已經完成的解決方案的鏈接:)。 (用於學習目的) – 2010-01-08 13:33:20

+0

是的,我不想讀取內存中的整個文件。涉及的跟蹤日誌相當大 – 2010-01-08 13:34:57

+0

@AZ:這非常棘手,因爲你基本上必須讀取一個緩衝區並向後查找換行符,並將各種事情考慮在內。我建議你嘗試從現有的代碼中學習:) – 2010-01-08 14:52:51