Чтение текстового файла с использованием BufferedReader и Scanner - PullRequest
3 голосов
/ 03 октября 2011

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

Я знаю, как читать строки, используя BufferedReader.Я знаю, как читать токены с помощью сканера.Но как мне объединить эти два разных режима чтения для одного текстового файла описанным выше способом?

1 Ответ

7 голосов
/ 03 октября 2011

Вы можете использовать Scanner для обеих задач.См. Метод Scanner.nextLine.

Если вам действительно нужно использовать BufferedReader и Scanner, вы можете просто сделать это следующим образом:

byte[] inputBytes = "line 1\nline 2\nline 3\ntok 1 tok 2".getBytes();
Reader r = new InputStreamReader(new ByteArrayInputStream(inputBytes));

BufferedReader br = new BufferedReader(r);
Scanner s = new Scanner(br);

System.out.println("First line:  " + br.readLine());
System.out.println("Second line: " + br.readLine());
System.out.println("Third line:  " + br.readLine());

System.out.println("Remaining tokens:");
while (s.hasNext())
    System.out.println(s.next());

Выход:

First line:  line 1    // from BufferedReader
Second line: line 2    // from BufferedReader
Third line:  line 3    // from BufferedReader
Remaining tokens:
tok                    // from Scanner
1                      // from Scanner
tok                    // from Scanner
2                      // from Scanner
...