читать строки в текстовом файле [Java] - PullRequest
3 голосов
/ 30 ноября 2010

Я постараюсь быть максимально ясным, но простите меня, если мой вопрос не идеален. У меня есть текстовый файл с несколькими строками данных. Пример:

123 Ральф Бозе 20000 200 1 2

256 ед. Шейн 30000 100 2 4

...

Мне нужно прочитать каждую строку последовательно и передать ее обратно в метод в отдельном классе для обработки. Я знаю, как разбить каждую строку на элементы с помощью StringTokenizer.

Однако я не уверен, как читать по одной строке за раз, передавать элементы обратно в другой класс, а затем, когда обработка будет завершена, прочитать СЛЕДУЮЩУЮ строку. Метод взаимодействия между моими классами работает нормально (проверено), но как мне читать по одной строке за раз?

Я думал о создании массива, в котором каждая строка была бы элементом массива, но так как число строк будет неизвестно, я не могу создать массив, так как не знаю его окончательную длину.

Спасибо

Баба

EDIT

грубая настройка:

Класс A

end_of_file = f1.readRecord(emp);

        if(!end_of_file)
        { 
           slip.printPay(slipWrite);
        }

Класс B

public boolean readRecord(Employee pers) throws IOException {

        boolean eof = false ;

        String line = in.readLine() ; 

                ???

                }

имя файла никогда не передается

так что до тех пор, пока я не смогу прочитать первую строку, но я думаю, что мне нужен способ циклически проходить между строками, чтобы читать их одну за другой, переходя между классами назад и вперед.

сложно ...

Ответы [ 2 ]

4 голосов
/ 30 ноября 2010

Есть много способов прочитать всю строку одновременно;Scanner, вероятно, самый простой:

final Scanner s = new Scanner(yourFile);
while(s.hasNextLine()) {
    final String line = s.nextLine();
    YourClass.processLine(line);
}
3 голосов
/ 30 ноября 2010
void readLine(String fileName)
{
   java.io.BufferedReader br = null;
   try
   {
      br = new java.io.BufferedReader(new java.io.FileReader(fileName));
      String line = null;
      while(true)
      {
          line = br.readLine();
          if(line == null)
             break;
          // process your line here
      }
   }catch(Exception e){
   }finally{
     if(br != null)
      {
         try{br.close();}catch(Exception e){}
       }
   }
}

Также, если вы хотите разбить строки ... используйте

Классы строк split метод.для разделения в зависимости от пространства ... вы можете сделать ... line.split("\\s*")

Надеюсь, что это работает

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