чтение нескольких строк при загрузке файла - PullRequest
0 голосов
/ 20 марта 2012

Может кто-нибудь сказать мне, как прочитать несколько строк и сохранить их значение.

например: file.txt

Probable Cause: The network operator has issued an alter attribute command for
the specified LCONF assign. The old value and the new value are show
Action Taken : The assign value is changed from the old value to the new
value. Receipt of this message does not guarantee that the new attribute
value was accepted by clients who use it. Additional messages may be.

Probable Cause: The network operator has issued an info attribute command for
the specified LCONF assign. The default value being used is displaye
Action Taken : None. Informational use only.

В приведенном выше файле вероятная причина и предпринятые действия являются столбцом таблицы базы данных. И после вероятной причины: это значение, которое будет сохранено в таблице базы данных для столбца вероятной причины, то же самое относится и к предпринятым действиям.

Так как же я могу прочитать несколько строк и сохранить их значение? Я должен прочитать значение для вероятной причины, пока строка не придет с Action Taken. Я использую BufferedReader и метод readLine() для чтения по одной строке за раз. Так может кто-нибудь сказать мне, как читать непосредственно с вероятной причины к действию, независимо от того, сколько строк проходит между ними.

1 Ответ

1 голос
/ 20 марта 2012

Самый простой способ, вероятно, состоит в том, чтобы просто хранить List<String> для каждого значения с циклами что-то , например:

private static final String ACTION_TAKEN_PREFIX = "Action Taken ";

...

String line;
while ((line = reader.readLine()) != null)
{
    if (line.startsWith(ACTION_TAKEN_PREFIX))
    {
        actions.add(line.substring(ACTION_TAKEN_PREFIX))
        // Keep reading the rest of the actions
        break;
    }
    causes.add(line);
}
// Now handle the fact that either we've reached the end of the file, or we're
// reading the actions

Как только вы получили пару «Вероятная причина» / «Выполненные действия», преобразуйте список строк обратно в одну строку, например, присоединяясь с "\ n", а затем вставьте в базу данных. (Класс Joiner в Guava сделает это проще.)

Хитрость связана с аномалиями:

  • Что произойдет, если вы не начнете с вероятной причины?
  • Что произойдет, если за одной вероятной причиной следует другая, или за одним набором действий следует другой?
  • Что произойдет, если вы достигнете конца файла после прочтения вероятной причины, но без списка действий?

Сейчас у меня нет времени, чтобы написать complete решение, но, надеюсь, вышеизложенное поможет вам в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...