2011-12-08 56 views
0

我讀巨大文本文件(1.8 GB)與C#撤消file.ReadLine()

 while ((j = file.ReadLine()) != null) {...} 

但是,某些操作後,我讓自己陷入到的情況,當我想以「撤消」最後的ReadLine,所以下一個ReadLine實際上會讀取完全相同的行。

有沒有辦法做到這一點? :)

同樣的工作可以在沒有任何閱讀的情況下查看下一個字符,這樣我就可以根據這個字符決定是否要讀取下一行。

例如:

>1 
    abc 
    def 
    >2 
    ghi 

後,我看了「變形點焊」用的ReadLine()我想知道,如果下一行包含「>」字符,或者如果有隻是英文字母。

非常感謝。

回答

4

對於剛剛「看着下一個字符」,使用peek()方法:

http://msdn.microsoft.com/en-us/library/system.io.streamreader.peek(v=VS.100).aspx

+0

非常感謝你。我發現這個,但與int返回值(預期的字符):)混淆)但當然62代表'>'。再次感謝,祝你有美好的一天! – Perlnika

+0

它們使用int,因此當沒有可讀的內容時它們可以返回-1。 –

+1

@Perlnika不要忘記接受它,如果它對你來說是正確的:) –

3

對於希望在接下來的字符,你可以使用的方法Peek

這將返回下一個字符而不更改文件中的位置。

2

你實際上是在尋找一個finite state machine。您應該將您的狀態設置爲current is 'def', check for '>',並在下一次迭代中執行必要的操作,而不是試圖展望下一個輸入(可能有也可能不存在或無效)。