我正在学习如何在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)'写的消息。 万分感谢。
答案 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);