打印文件Java行时出现问题

时间:2018-12-08 23:36:37

标签: java file bufferedreader

我正在学习如何在Java中读取和写入文件。举了很多例子,但是在这个具体案例上,我遇到了问题,只是不知道为什么,因为就我而言,与其他例子相比,没有任何变化。也许只有一个愚蠢的错误,我看不到。显然,名称为“ naval.txt”的文件已创建并保存在相应的源文件中。这是我的代码:

public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new FileReader("naval.txt"));
            String line;

            while (((line = br.readLine()) != null)) {
                Scanner sc = new Scanner(line);
                System.out.println(sc.next());

            }

        } catch (IOException e) {
            e.getMessage();
            System.out.println("Not possible to read the file");
        }

    }

它甚至都没有读。如果我运行它,它会显示我为'catch(Exception e)'写的消息。 万分感谢。

3 个答案:

答案 0 :(得分:0)

您正在混合两种不同的方式来读取文件,结果是错误的。
Scanner对象没有构造函数,将字符串作为参数。
仅使用Scanner打开文件并读取其行:

public static void main(String[] args) {
    try {
        Scanner sc = new Scanner(new File("naval.txt"));
        String line;
        while (sc.hasNext()) {
            line = sc.nextLine();
            System.out.println(line);
        }   
    } catch (IOException e) {
        System.out.println(e.getMessage() + "\nNot possible to read the file");
    }
}

答案 1 :(得分:0)

为完整起见,这是仅使用BufferedReader的等效解决方案。如其他答案所述,您既不需要Scanner也不需要BufferedReader

try {
   BufferedReader br = new BufferedReader(new FileReader("naval.txt"));
   String line;

   while (((line = br.readLine()) != null)) {
      System.out.println(line);
   }
} catch (IOException e) {
   System.out.println("Not possible to read the file");
   e.printStackTrace();
}

答案 2 :(得分:0)

如果您使用的是Java-8,则只需一行即可实现:

Files.lines(Paths.get("naval.txt")).forEach(System.out::println);