Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法访问java项目中的文本文件_Java - Fatal编程技术网

无法访问java项目中的文本文件

无法访问java项目中的文本文件,java,Java,我正在尝试访问项目文件夹中的文本文件output.txt。下图显示了文件夹结构 当我尝试使用上面的代码访问该文件时,会出现以下异常 java.io.FileNotFoundException: .\testFiles\output.txt (No such file or directory) 我尝试过不同的文件路径格式,但都不起作用。我认为问题在于文件路径格式 提前谢谢。如果我没记错的话,您可以在当前目录中获得如下文件夹/文件: File folder = new File("testF

我正在尝试访问项目文件夹中的文本文件
output.txt
。下图显示了文件夹结构

当我尝试使用上面的代码访问该文件时,会出现以下异常

 java.io.FileNotFoundException: .\testFiles\output.txt (No such file or directory)
我尝试过不同的文件路径格式,但都不起作用。我认为问题在于文件路径格式


提前谢谢。

如果我没记错的话,您可以在当前目录中获得如下文件夹/文件:

File folder = new File("testFiles");
然后,您可以通过获取绝对路径并使用它创建一个新文件来打开该文件,如下所示:

File file = new File(folder.getAbsoluteFile() + File.separator + "output.txt");
我不确定,但我认为你也可以:

File file = new File("testFiles/output.txt");
我希望这有帮助:)


注意:这些都未经测试,因此可能无法使用。

您必须将文件声明为新文件:

File yourFile = new File("testFiles/output.txt");

从您有一个webcontent文件夹的事实来看,我想这是一个web项目,可能打包为war?在这种情况下,您要做的是将相应的文件与类一起打包,并使用如下方式访问:

Thread.currentThread().getContextClassLoader().getResourceAsStream("output.txt")
如果您将testFiles文件夹添加为源文件夹,上面的代码将起作用(这意味着它将与类一起打包并在运行时可用)


好的方面是,这样路径可以保持相对,无需变成绝对路径。我认为问题在于,当路径以点开始时,依赖于相对路径,这意味着它将相对于用户目录(系统属性值
user.dir
)所以我相信你的用户目录不是你所期望的。要进行调试,您可以执行以下操作:

System.out.println(new File(file).getAbsolutePath());

通过这种方法,您将能够快速知道绝对路径是否正确。

可能重复:除了已经给出的答案外,如果您在Java中硬编码路径,请使用前斜杠。感谢大家的回复。最后,我暂时选择了完整的绝对路径。下次我一定会参考所有的评论和答案。不,你不必这么做。2.如果将testFiles文件夹添加为源文件夹(这意味着它将与类打包并在运行时可用),则上述代码的+1将起作用
System.out.println(new File(file).getAbsolutePath());