读取文件时出现 FileNotFoundException 异常,使用绝对路径。

3

我试图使用绝对路径从文件系统读取文件,但因为“FileNotFoundException”失败了,我不知道原因。

File file=new File("E:\\Directory\\File.txt");
byte[] buff=new byte[8];
FileInputStream fileIn=new FileInputStream(file.getAbsolutePath());
int n=fileIn.read(buff);
System.out.println(n);

为确认文件是否存在,请复制完整路径,删除多余的 \ 并将其粘贴到Windows资源管理器中。 - Jules
3个回答

0

以下是可能导致此问题的一些原因:

  1. 文件不存在。(您说这不是问题...)
  2. 目录存在,但您的应用程序没有读取它的权限。
  3. 目录和文件存在,但您使用的真实路径名或路径名存在问题:

    • 它可能有看不见的/非打印字符。
    • 它可能有尾随空格字符,或嵌入式空格数量不同。
    • 它可能是一个同形异义词问题。
  4. 实际错误发生在代码的其他地方。

  5. 某种方式,您实际运行的代码与源代码不匹配;例如,您的编辑/编译/部署/运行过程存在方法论问题。

我也可以建议您尝试像这样:

File file = new File("E:/Directory/File.txt");
FileInputStream fileIn = new FileInputStream(file);

Java的路径名处理应该将“/”转换为适当的平台特定文件分隔符。而且,file已经表示绝对路径,因此不需要调用file.getAbsolutePath()

“3.” 不是错误的吗?因为他的路径名中没有包含这些内容。 - ItamarG3
他向我们展示的代码中的路径名没有这些问题,但是1)这可能不是真正的代码,2)我们只有他的话来证明实际的路径名是他认为的那样。建议他(真正地)检查这些事情。甚至要再次检查它们。 - Stephen C
我同意,但我试着尽力应对我们拥有的,不要过度假设。 - ItamarG3
@ItamarGreen - 我认为它已经超越了那个阶段。如果情况确实如他所描述的那样,这种情况是不可信的。 - Stephen C
非常正确,我只是说这是一个奇怪的问题。 - ItamarG3
显示剩余2条评论

0
感谢您的帮助。我已经知道原因了。因为可能会抛出异常,所以我应该在方法签名中添加异常,或者用try/catch包围起来。实际上,当您使用Intelli IDEA时,“Alt+Enter”可以帮助您找出代码的问题所在......

-1

问题就像错误所述:

文件不存在,即在该路径中没有文件。您给构造函数的名称可能是错误的。 您可以通过以下方式检查文件是否存在:

File file=new File("E:\\Directory\\File.txt");
if(file.exists()){

    //do things here
}

你也可以从Windows资源管理器中检查文件是否存在(假设你的电脑运行的是Windows操作系统)。如果你找不到该文件,那么这就解释了问题所在。正如我所说,错误是因为该路径下没有文件而引发的。


谢谢回答,但我已经检查过了,该文件存在于此路径中。 - Adolph Young
你有按照所描述的方法进行检查吗? - ItamarG3
1
@AdolphYoung 你具体是什么意思? - ItamarG3
抱歉我的英语不好... 这是API链接 Java API - Adolph Young
1
@AdolphYoung,好的。但我仍然不明白那与此相关。 你是否检查了file.exists()是否返回true? - ItamarG3
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接