有什么问题?为什么它给我“未报告的异常java.io.FileNotFoundException”?这是我正在学习的一本书的练习,我无法弄清楚出了什么问题,它看起来就像他们提供的那样。该文件位于同一文件夹中。
import java.io.*;
import java.util.*;
public class Mine
{
public static void main(String[] args)
{
Scanner inFile =
new Scanner(new FileReader("Ch3_Ex7Data.txt"));
PrintWriter outFile = new PrintWriter("Ch3_Ex7Output.dat");
String lastName;
lastName = inFile.next();
System.out.println(lastName);
inFile.close();
outFile.close();
}
}
答案 0 :(得分:1)
FileNotFoundException
表示,嗯......然后找不到文件。
确保"Ch3_Ex7Data.txt"
文件是项目根目录的直接子项。当您只使用此(“Ch3_Ex7Data.txt”)相对路径时,读取IDE将首先搜索的文件。
ProjectRoot
Ch3_Ex7Data.txt
src
注意:将来,您将了解到,当文件成为嵌入式资源时,这不是生产/部署目的的最佳解决方案,但上述内容应该适用于您,直到您深入研究生产阶段
更新到OP评论
“我现在应该养成其他方法的习惯吗?如果是这样,那会是什么样子”
您将来想要学习它,但首先需要了解InputStreams
。所以这可能是不成熟的。但是如果你不想了解更多,只需搜索“从罐子里读取文本文件”。你会找到看起来像这样的答案
InputStream is = getClass().getResourceAsStream("Ch3_Ex7Data.txt");
您的文件现在必须位于类路径中,因此您的文件结构将从上面的结构改为 this
ProjectRoot
src
Ch3_Ex7Data.txt
答案 1 :(得分:0)
FileNotFoundException是一个已检查的异常。你必须尝试/捕获它。文件是否存在无关紧要。 FileNotFoundException扩展了IOException,因此您只需要捕获IOException。这应该编译:
import java.io.*;
import java.util.*;
public class Mine
{
public static void main(String[] args)
{
Scanner inFile = null;
PrintWriter outFile = null;
try {
try {
inFile = new Scanner(new FileReader("Ch3_Ex7Data.txt"));
outFile = new PrintWriter("Ch3_Ex7Output.dat");
String lastName;
lastName = inFile.next();
System.out.println(lastName);
} finally {
if(inFile != null)
inFile.close();
if(outFile != null)
outFile.close();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}