怎么了?为什么它会给我未报告的异常java.io.FileNotFoundException?
怎么了?为什么它会给我“未报告的异常java.io.FileNotFoundException”?这是我正在学习的一本书的练习,我只是不知道哪里错了,它看起来和他们提供的例子一模一样。此文件位于同一文件夹中怎么了?为什么它会给我未报告的异常java.io.FileNotFoundException?,java,Java,怎么了?为什么它会给我“未报告的异常java.io.FileNotFoundException”?这是我正在学习的一本书的练习,我只是不知道哪里错了,它看起来和他们提供的例子一模一样。此文件位于同一文件夹中 import java.io.*; import java.util.*; public class Mine { public static void main(String[] args) { Scanner inFile = new S
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();
}
}
FileNotFoundException
意味着。。。那么文件就找不到了
确保“Ch3_Ex7Data.txt”
文件是项目根目录的直接子目录。读取一个文件时,当您仅使用此(“Ch3_Ex7Data.txt”)相对路径时,IDE将首先在其中进行搜索
ProjectRoot
Ch3_Ex7Data.txt
src
注意:在将来,当文件不能成为嵌入式资源时,您将了解到这不是用于生产/部署目的的最佳解决方案,但在您深入研究生产阶段之前,上述方法应该对您有效
更新操作评论 “我现在应该养成另一种方法的习惯吗?如果是,那会是什么样子?” 将来您可能想学习它,但首先需要学习
InputStreams
。因此,这可能是一个错误,但为时过早。但如果您不想了解更多,只需搜索“从jar读取文本文件”。你会找到这样的答案
InputStream is = getClass().getResourceAsStream("Ch3_Ex7Data.txt");
文件现在必须位于类路径中,因此文件结构将从上面的结构更改为下面的结构
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();
}
}
}
和什么在同一个文件夹中?它找不到您试图读取的文件。文件与编译的类文件的关系在哪里?更重要的是,在执行程序时,文件与当前目录的关系在哪里?文件与编译的类文件位于同一位置,因此我认为我不需要添加路径。我应该在哪里添加代码。我现在应该养成另一种方法的习惯吗?如果是这样,那会是什么样子?谢谢所有文件都在同一文件夹中是的,但是相对于项目根目录,它们在哪里?这才是最重要的。看我刚才添加的图片这里是你的
src
?位于Excr7
中。Excr7
是实际的项目文件夹还是一个包?我不确定try的概念是什么,我还没有学会,但它起了作用。非常感谢你!基本上,如果找不到文件,构造函数将抛出此异常。try/catch意味着控制流将跳出并跳转到catch块。(顺便说一句,我用try…finally…close展示的东西不是完全必要的,但这是一个最佳实践。Java 7+还必须替换这个习惯用法。)在运行时可能会抛出异常,在这种情况下@peeskillet建议的可能会有所帮助。相对目录很挑剔。
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();
}
}
}