使用绝对路径读取文件时出现FileNotFoundException

时间:2016-11-05 11:28:42

标签: java fileinputstream

我正在尝试使用绝对路径从文件系统读取文件但由于“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);

3 个答案:

答案 0 :(得分:0)

以下是一些可能导致此问题的事情:

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

    • 它可能包含隐藏/非打印字符。
    • 它可能包含尾随空格字符或不同数量的嵌入空格
    • 这可能是一个同性恋问题
  4. 实际错误发生在代码中的其他位置。

  5. 不知何故,您实际运行的代码与您的源代码不符;例如你的编辑/编译/部署/运行程序存在方法问题。
  6. 我还可以建议你这样试试:

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:-1)

嗯,问题正如错误所述:

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

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

    //do things here
}

您还可以检查Windows资源管理器中是否存在该文件(假设您在PC上运行Windows)。如果找不到该文件,则说明问题所在。正如我所说,错误被抛出,因为没有该路径的文件。