FileInputStream 不与相对路径 [已关闭] 一起使用

我试图从中创建一个对象并将文件的相对值传递给其构造函数,但它无法正常工作并抛出一个FileInputStreamFileNotFoundException

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

答案 1

在开始时将使路径成为绝对路径而不是相对路径。/

尝试删除前导符,因此请替换:/

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

跟:

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

如果仍然遇到问题,请尝试通过检查当前目录来确保程序从您认为的位置运行:

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

答案 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)


推荐