使用扫描器读取多行文本文件

4
我是一个可以读取文本文件的程序,我需要为每一行执行单独的方法。可以像下面这样实现:
LineNumberReader myReader = new LineNumberReader(new FileReader("filename"));

Scanner scanner = new Scanner(myReader.readLine());
while (scanner.hasNext()) { ... }

将后两行放入一个循环中,以便我可以为每一行解析标记。但我想知道是否有任何方法可以在每次迭代时不实例化新的scanner对象来完成这个操作。

你可以直接使用 Scanner 类。 - PM 77-1
3个回答

2

使用一个Scanner读取每一行的Java代码:

Scanner myScanner = new Scanner(new File("filename"));
while (myScanner.hasNextLine())
{
   String line = myScanner.nextLine();
    ...
}

1
你可以将Reader和Scanner结合起来使用,只需将Reader传入Scanner,然后进行循环。
LineNumberReader myReader = new LineNumberReader(new FileReader("filename"));

Scanner myScanner = new Scanner(myReader);  // <== scanner uses Reader
while (myScanner.hasNextLine()) {
    String line = myScanner.nextLine();
}

我喜欢你的评论 ;) - MaxZoom

0

@Max Zoome的例子是一个不错的方法,但它有一个问题,就是这个循环会进入无限状态。因此,我建议您使用下面的版本:

String line;
while (myScanner.hasNextLine() && (line=myScanner.nextLine()!=null))
{
   // Do whatever you want to do 
}

替代方案

当您想要逐行读取文件时,使用BufferedReader是一个不错的选择。

因为Scanner用于从流的内容中解析标记,而BufferedReader同步的,而Scanner则不是。

FileReader in = new FileReader("yourFileName");
BufferedReader br = new BufferedReader(in);

while ((line=br.readLine()) != null) {
    System.out.println(line);
}
in.close();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接