Я разбираю текстовый файл размером до 35 МБ.Попытка избежать чтения файла дважды
настоящее время у меня этот код:
const string show_BLOCK_DELIMITER = "show ";
const string Show_BLOCK_DELIMITER = "Show ";
const string Begin_SHOW_HW_DELIMITER = @"show hardware internal errors";
и эту логику, которая контролирует то, что для захвата:
if ((line == null) || (trimmed.StartsWith(show_BLOCK_DELIMITER))
|| (trimmed.StartsWith(Show_BLOCK_DELIMITER))
|| (trimmed.Contains(Begin_SHOW_HW_DELIMITER)))
{
//stuff happens here
}
То, как я захвачу читать файл и когда я ударил линию, которая начинается с 'show' или 'Show' Я проверяю его, чтобы увидеть, что это то, что я хочу захватить. Если это так, я начинаю захватывать до следующей строки, которая начинается с «show» или «Show». Новый код должен захватывать материал между константой «Begin_SHOW_HW_DELIMTER», кроме как здесь есть образец ввода. То, что я должен получить, это 2 блока или строки, каждый из которых начинается с «Module-N #». Поскольку те строки с fc-mac в них начинаются с «show», но не входят в список того, что я хочу захватить код думает, что это новый блок, и они не попадают в плен. На данный момент мне интересно узнать о отдельном методе обработки этой новой части и просто прочитать файл дважды. Операторы if/else уже довольно запутаны.
модуль-1 # показать внутренние ошибки аппаратных
show hardware internal fc-mac port 1 interrupt-counts
show hardware internal fc-mac port 2 interrupt-counts
модуль-2 # показать внутренние ошибки аппаратных
show hardware internal fc-mac port 1 interrupt-counts
show hardware internal fc-mac port 2 interrupt-counts
Где находится эта страница, где вы дважды читаете файл? – Ryan
@minitech Извините, я не понял. Пока еще нет. Я стараюсь избегать этого, но задаюсь вопросом, является ли он менее эффективным, чем добавление дополнительных проверок в мои уже запутанные if/else. Я бы разобрал файл один раз перед существующими захватами, которые у меня есть, а затем проанализируйте его снова для новых захватов, которые я хочу. Новый вход прерывает существующую логику без нескольких дополнительных проверок специального случая. –