5

我的 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”,但结果相同。

提前感谢您的任何提示

4

5 回答 5

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());
于 2012-05-31T09:10:52.747 回答
2

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

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

要弄清楚的预期file.txt位置,您可以这样做

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

如果它例如输出

/some/path/project/build

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

于 2012-05-31T09:07:26.237 回答
1

尝试:

File f = new File("./build/classes/file.txt");
于 2012-05-31T09:05:42.253 回答
0
Use "." to denote the current directory

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

File f = new File(path);
于 2012-05-31T09:47:39.383 回答
0

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

于 2020-07-20T06:10:53.213 回答