java.io.FileNotFoundException错误消息

时间:2014-06-30 15:34:30

标签: java

我有一个简单的程序来检查我的文件是否存在。

我已经将文件复制到我的工作文件夹(使用我的java类)和c:。

在调用new FileInputStream("1.xls")时,代码会产生异常错误!

new FileInputStream("1.xls")

使用Exception in thread "main" java.io.FileNotFoundException: 1.xls (Le fichier spécifié est introuvable) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(FileInputStream.java:146) at java.io.FileInputStream.<init>(FileInputStream.java:101) at NewMain.main(NewMain.java:25) 调用它时,它可以正常工作!

这是我的代码

new FileInputStream("c:\\1.xls")

1 个答案:

答案 0 :(得分:3)

  

我已将文件复制到我的工作文件夹下(使用我的java类)

"1.xls"是相对路径。在IDE中进行开发运行(从文件系统读取)时,路径将相对于工作目录(通常是项目根目录)。所以你的文件(给定相对路径)必须直接在项目根目录中,与src相同的级别

如果从命令运行并且工作目录是类所在的位置,并且该文件是该类所在的位置,那么这也应该与您正在使用的路径一起使用

  

使用新的FileInputStream(“c:\ 1.xls”)调用它时,它可以工作!

是的它应该有效。通常绝对路径应该工作


注意:您将文件放在Java类所在的位置,这告诉我您希望将该文件作为资源嵌入到项目中。在这种情况下,您想要从文件系统中读取它。您应该通过url资源流读取它。您可以使用YourClass.class.getResourceAsStream("/path/to/file")来返回InputStream。所以你可以做类似

的事情
InputStream is = YourClass.class.getResourceAsStream("/path/to/file");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));

您希望以这种方式执行此操作的原因是,一旦您将应用程序放在jar中,您从文件系统中读取的路径将不再有效,因此必须通过类路径读取它。使用上面的代码,/很重要,因为它会将您带到类路径的根目录(从开发角度来说)从src开始。因此,如果您的文件位于src/resources/file.txt,那么您将使用路径"/resources/file.txt"