的FileInputStream不与相对路径工作[关闭](FileInputStream doesn

2019-07-18 19:06发布

我试图创建一个对象FileInputStream ,并传递一个文件给它的构造相对价值,但它不能正常工作,并投掷了FileNotFoundException

try {
   InputStream is = new FileInputStream("/files/somefile.txt");
} catch (FileNotFoundException ex) {
   System.out.println("File not found !");
}

Answer 1:

/在一开始会使得绝对路径,而不是相对的。

尝试删除的领先/ ,所以更换:

InputStream is = new FileInputStream("/files/somefile.txt");

有:

InputStream is = new FileInputStream("files/somefile.txt");

如果您仍遇到问题,请确保该程序从那里你想通过运行检查当前目录 :

System.out.println(System.getProperty("user.dir"));


Answer 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)



Answer 3:

  1. 这不是一个相对路径,它是一个绝对路径。
  2. 如果您使用的是Windows,你需要你的路径前增加你的盘符:

InputStream is = new FileInputStream("C:/files/somefile.txt");

Windows不支持/符号作为“根”

如果要加载thatt你把你的JAR文件,你需要使用

getClass().getResource("path to your file");

要么

getClass().getResourceAsStream("path to your file");


文章来源: FileInputStream doesn't work with the relative path [closed]