使用BufferedReader和Scanner读取文本文件

时间:2011-10-03 13:50:28

标签: java java.util.scanner bufferedreader

我需要读取文本文件的第一行 n 行作为行(每行可能包含或不包含空格)。文本文件的其余部分包含一个未知数字 N 的标记,这些标记是以空格分隔的(分隔符是空格,制表符和换行符的混合,所有这些都要处理与分隔符完全相同)。

我知道如何使用BufferedReader读取行。我知道如何使用Scanner读取令牌。但是,如何以上述方式将这两种不同的阅读模式组合成单个文本文件?

1 个答案:

答案 0 :(得分:7)

您可以使用Scanner执行这两项任务。请参阅Scanner.nextLine方法。

如果真的需要同时使用BufferedReaderScanner,您可以这样做:

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