Как обрабатывать EOF, когда есть строка символов NUL - PullRequest
0 голосов
/ 28 февраля 2012

Я читаю файл, используя это while ((line = f1.ReadLine()) != null) однако моя программа не может обработать последнюю строку, которая всегда есть в отладчике "\ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 .... дальше и дальше " Каков наилучший способ справиться с этим?

while ((line = f1.ReadLine()) != null)
            {
                doing abc

              }

когда я запускаю отладчик, он все еще идет внутри цикла и выполняет abc. Конечно, это не удается, потому что в строке ничего нет

1 Ответ

1 голос
/ 28 февраля 2012

К сожалению, строка null:

'\0\0\0\0\0\0\0\0\0\0`

Не == null. Вы можете попробовать что-то вроде этого:

while(!string.IsNullOrEmpty(line = f1.ReadLine()))
{
  if (line[0]=='\0') {
    /// strings should rarely start with null, so feel feel to break out of your loop here.
  }
  else
  {
    // found some real content, so process normally.
  }
}

Хотя я не фанат таких проверок. Надеюсь, у кого-то еще будет лучшее предложение.

Возможно, лучше задать вопрос: почему я получаю массивную длинную строку нулей при построчном чтении текстового файла?

...