C # отменить файл.ReadLine () - PullRequest
       36

C # отменить файл.ReadLine ()

1 голос
/ 08 декабря 2011

Я читаю огромный текстовый файл (1,8 ГБ) с

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

Однако после некоторых операций я попал в ситуацию, когда я хотел бы «отменить» последний ReadLine, так что следующий ReadLine будет фактическипрочитайте точно такую ​​же строку.

Есть ли способ сделать это?:)

Та же самая работа будет выполнять «просмотр следующего символа» без какого-либо чтения, так что я мог бы на основании этого символа решить, хочу ли я читать следующую строку или нет.

пример:

    >1
    abc
    def
    >2
    ghi

После того, как я прочитал 'def' с помощью ReadLine (), я хочу узнать, содержит ли следующая строка символ '>' или есть только буквы алфавита.

Спасибомного.

Ответы [ 3 ]

4 голосов
/ 08 декабря 2011

Для «просмотра следующего символа» используйте метод Peek ():

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

3 голосов
/ 08 декабря 2011

Для просмотра следующего символа вы можете использовать метод Peek .

Это вернет следующий символ без изменения вашего местоположения в файле.

2 голосов
/ 08 декабря 2011

На самом деле вы ищете конечный автомат . Вместо того чтобы пытаться заглянуть в ваш следующий ввод (который может или не может присутствовать или быть действительным), вы должны установить ваше состояние равным current is 'def', check for '>' и выполнить необходимую операцию на следующей итерации.

...