gpt4 book ai didi

java.io.FileNotFoundException 错误信息

转载 作者:搜寻专家 更新时间:2023-11-01 03:05:25 32 4
gpt4 key购买 nike

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

我已将文件复制到我的工作文件夹(包含我的 java 类)和 c: 中。

打电话时 <code>new FileInputStream("1.xls")</code> ,代码会产生异常错误!

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)

<code>new FileInputStream("c:\\1.xls")</code> 调用它时, 它有效!

这是我的代码

public static void main(String[] args) throws FileNotFoundException {
// TODO code application logic here
InputStream input = new BufferedInputStream(new FileInputStream("c:\\1.xls"));
System.out.print("The file exists");
}

最佳答案

I've copied the file under my work folder (with my java classes)

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

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

when calling it with new FileInputStream("c:\1.xls"), it works!

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


注意:您将文件放在 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"

关于java.io.FileNotFoundException 错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24493799/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com