使用BufferedReader和Scanner读取文本文件 [英] Reading a text file using BufferedReader and Scanner

查看:98
本文介绍了使用BufferedReader和Scanner读取文本文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need to read the first n lines of a text file as lines (each line may or may not contain whitespace). The remainder of the text file contains an unknown number N of tokens that are whitespace-delimited (delimiters are a mixture of space, tab, and newline characters, all to be treated identically as delimiters).

我知道如何使用BufferedReader读取行。我知道如何使用扫描仪读取令牌。但是,如何以上述方式将这两种不同的阅读模式结合到一个文本文件中?

I know how to read lines using BufferedReader. I know how to read tokens using Scanner. But how do I combine these two different modes of reading for a single text file, in the above described manner?

推荐答案

您可以使用 Scanner 来完成这两项任务。请参见 Scanner.nextLine 方法。

You could use a Scanner for both tasks. See the Scanner.nextLine method.

如果您真的需要同时使用 BufferedReader Scanner ,您可以像这样简单地进行操作:

If you really need to use both a BufferedReader and a Scanner you could simply do it like this:

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

这篇关于使用BufferedReader和Scanner读取文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆