使用Scanner发现java.io.FileNotFoundException(找不到文件)。我的代码有什么问题?

时间:2012-05-31 09:03:45

标签: java java.util.scanner filenotfoundexception

我的netbeans“/ build / classes”目录中有一个.txt文件(“file.txt”)。

相同的目录中,为以下代码编译了.class文件:

try {
File f = new File("file.txt");
Scanner sc = new Scanner(f);
}
catch (IOException e) {
   System.out.println(e);
}

调试代码(“Scanner sc ..”中的断点)启动异常并打印以下内容:

  

java.io.FileNotFoundException:file.txt(系统找不到   指定文件)

我也尝试使用“/file.txt”和“//file.txt”但结果相同。

提前感谢您提供任何提示

5 个答案:

答案 0 :(得分:7)

如果您只使用new File("pathtofile")该路径相对于您当前的工作目录,那么这完全不是您的类文件所在。

如果您确定该文件位于类路径的某个位置,则可以改为使用以下模式:

URL path = ClassLoader.getSystemResource("file.txt");
if(path==null) {
     //The file was not found, insert error handling here
}
File f = new File(path.toURI());

答案 1 :(得分:2)

JVM将在当前工作目录中查找该文件。

这取决于您的IDE设置(程序的执行方式)。

要找出 所需的file.txt,你可以做到

System.out.println(new File("."));

如果它例如输出

/some/path/project/build

您应该将file.txt放在构建目录中(或指定相对于构建目录的正确路径)。

答案 2 :(得分:1)

尝试:

File f = new File("./build/classes/file.txt");

答案 3 :(得分:0)

Use "." to denote the current directory

String path = "./build/classes/file.txt";

File f = new File(path);

答案 4 :(得分:0)

文件对象加载,在其当前目录中寻找匹配项...。​​直接位于项目文件夹中,而不是源文件中加载类文件.....直接将文件放在项目文件夹中