FileInputStream 不适用于相对路径[关闭]
Posted
技术标签:
【中文标题】FileInputStream 不适用于相对路径[关闭]【英文标题】:FileInputStream doesn't work with the relative path [closed] 【发布时间】:2013-01-11 06:36:37 【问题描述】:我试图从FileInputStream
创建一个对象并将文件的相对值传递给它的构造函数,但它不能正常工作并抛出了FileNotFoundException
try
InputStream is = new FileInputStream("/files/somefile.txt");
catch (FileNotFoundException ex)
System.out.println("File not found !");
【问题讨论】:
/files 不是相对路径。你是说 ./files 吗? 这不是相对路径。这是一条绝对路径。 “./files/”或“files/”都应该作为相对路径。 它工作正常,但找不到文件。那是因为它不是你说的地方。是你的错,不是 FileInputStream 的。 【参考方案1】:开头的/
将使路径成为绝对路径而不是相对路径。
尝试删除前导/
,因此替换:
InputStream is = new FileInputStream("/files/somefile.txt");
与:
InputStream is = new FileInputStream("files/somefile.txt");
如果您仍然遇到问题,请尝试通过checking the current directory 确保程序从您认为的位置运行:
System.out.println(System.getProperty("user.dir"));
【讨论】:
我发现了同样的错误,但俄罗斯文件名只是我应该做的。我的文件路径 /storage/emulated/0/fourth_ррсттууффххцц.txt 请帮助 不,如果文件与 InputStream 实例代码位于同一目录中,则不起作用。【参考方案2】:其他海报是正确的,您给出的路径不是相对路径。您可能会做类似this.getClass().getResourceAsStream("Path relative to the current class")
的事情。这将允许您基于相对于您调用它的类的路径将文件作为流加载。
更多详情请参阅 Java API:http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String)
【讨论】:
【参考方案3】:-
这不是相对路径,而是绝对路径。
如果您使用的是 Windows,则需要在路径前添加驱动器号:
InputStream is = new FileInputStream("C:/files/somefile.txt");
windows 不支持 /
符号作为“根”
如果要加载要放入 JAR 中的文件,则需要使用
getClass().getResource("path to your file");
或
getClass().getResourceAsStream("path to your file");
【讨论】:
files是项目src文件夹中的一个包,我想把这个文件夹或包作为最终.jar文件的一部分 好的,但是你的路径不是相对的,所以你需要使用相对路径或者为你的文件指定绝对路径 好的,你能给我一个代码来获取最终的.jar文件的绝对路径吗:) 检查我的编辑,然后让我知道它是否有效以上是关于FileInputStream 不适用于相对路径[关闭]的主要内容,如果未能解决你的问题,请参考以下文章