扫描从文件

时间:2016-05-28 01:35:26

标签: java java.util.scanner

我需要从行中扫描单词,这些行直接从文本文件中读取。我目前正在使用BufferedReader,FileReader和Scanner。 事情如下:

while((thisLine = reader.readLine()) != null){

            Scanner scan = new Scanner(thisLine);

            while(scan.hasNext()){
                thisLine = scan.next();
                System.out.println(thisLine);
            }
}

它工作正常,但我想知道是否有一种更有效的方法可以这样做,而无需在读取的每一行中实例化Scanner类。

编辑:我实际上相信我需要使用Scanner类,因为如果它遇到某种模式,我必须再次“扫描”一行。我正在使用SIC机器的汇编程序,因此我必须找出我正在阅读的内容是注释,指令,操作数等。

3 个答案:

答案 0 :(得分:1)

如果你正在使用Java 8,你可能想用这种简单的方式来阅读文件。

try(Stream<String> s = Files.lines(Paths.get("myFileName.txt"))) {
     s.flatMap(x -> Arrays.stream(x.split(" ")))
      .forEach(System.out::println);
}

输出

test

enter image description here

答案 1 :(得分:0)

根本不需要Scanner。删除整个while循环,只打印thisLine

的值
while((thisLine = reader.readLine()) != null){
    System.out.println(thisLine);
}

答案 2 :(得分:0)

假设您希望每个单词都在新行上,您可以消除 Scanner并使用String.split("\\s+")通过空格将每行标记为单词。然后,假设您使用的是Java 8+,您应该能够使用lambda来迭代令牌。像

这样的东西
while ((thisLine = reader.readLine()) != null) {
    Stream.of(thisLine.split("\\s+")).forEach(System.out::println);
}