简单程序抛出相对路径的FileNotFound异常

时间:2015-12-12 18:18:44

标签: java netbeans path

一个愚蠢的问题,但经过大量的谷歌搜索,我仍然无法让它工作。

    System.out.print("Start");

    File file = new File("TestFile.txt");

    Scanner scanner = new Scanner(file);

当我运行它时,我得到一个FileNotFound异常。我在NetBeans上运行,并且我已将TestFile.txt放在与主类相同的包中。当我使用绝对路径时,它可以工作。我可以在build文件夹中看到.class文件旁边的文件。我尝试过使用命令行,但它也没有工作。

3 个答案:

答案 0 :(得分:1)

相对文件路径与包含代码的类文件的位置无关。它们相对于启动java可执行文件的目录。

就像执行

时一样
ls foo

dir foo

ls / dir在当前目录中查找foo目录,而不是在ls可执行文件或dir可执行文件所在的目录中查找。

所以,类似地,执行时

java com.foo.bar.MainClass 

如果MaiClass文件打开文件" foo.txt",它将在执行命令java com.foo.bar.MainClass时所在的目录中查找它。

答案 1 :(得分:0)

如果使用相对路径,则具有该文件的文件夹必须位于类路径中,因此您可以将该文件放在根文件夹中(如果从jar文件运行代码),或将根文件夹添加到类路径中

如果要将文件保留在该文件夹中,则必须将其包含在类路径中才能使其正常工作。

此外,java命令行程序的相对路径是根文件夹,因此您也可以构建从该点开始的相对路径。

答案 2 :(得分:0)

您应该将文本文件放在'工作目录中。你的申请。如果您不想这样做,则应在类路径中包含包含此文件的文件夹。