我试图创建一个对象FileInputStream
并将文件的相对值传递给它的构造函数,但它不能正常工作并抛出一个FileNotFoundException
try {
InputStream is = new FileInputStream("/files/somefile.txt");
} catch (FileNotFoundException ex) {
System.out.println("File not found !");
}
我试图创建一个对象FileInputStream
并将文件的相对值传递给它的构造函数,但它不能正常工作并抛出一个FileNotFoundException
try {
InputStream is = new FileInputStream("/files/somefile.txt");
} catch (FileNotFoundException ex) {
System.out.println("File not found !");
}
/
开头将使路径成为绝对路径而不是相对路径。
尝试删除前导/
,所以替换:
InputStream is = new FileInputStream("/files/somefile.txt");
和:
InputStream is = new FileInputStream("files/somefile.txt");
如果您仍然遇到问题,请尝试通过检查当前目录来确保程序正在从您认为的位置运行:
System.out.println(System.getProperty("user.dir"));
其他海报是正确的,您给出的路径不是相对路径。你可能会做类似的事情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)
InputStream is = new FileInputStream("C:/files/somefile.txt");
windows 不支持/
符号为“root”
如果要加载将放入 JAR 的文件,则需要使用
getClass().getResource("path to your file");
或者
getClass().getResourceAsStream("path to your file");