即使文件存在,Java FileNotFoundException也是如此

时间:2011-12-22 05:36:45

标签: java

我正在尝试阅读位于" C:\ Users \ Siddharth \ Documents \ aarti \ yeh_vidhi_mangal.txt"的文件。以下代码表示文件存在

String filename = "C:\\Users\\Siddharth\\Documents\\aarti\\yeh_vidhi_mangal.txt";
        File file = new File(filename);
        System.out.println(file.exists());

但是当我尝试使用

打开文件时
FileInputStream in = new FileInputStream(file);

抛出FileNotFoundException。这是因为访问被拒绝了吗?我检查了文件权限,他们没事。

我也尝试过没有日食的工作。从命令行:

 C:\Users\Siddharth\workspace\file_io_test\src>javac Foo.java
    Foo.java:16: error: unreported exception FileNotFoundException; must be caught o
    r declared to be thrown
                    FileInputStream in = new FileInputStream(file);
                                         ^
    1 error

2 个答案:

答案 0 :(得分:8)

根据FileInputStream的文档,“如果指定的文件不存在,是一个目录而不是一个普通文件,或由于某些其他原因无法打开阅读然后抛出FileNotFoundException。“ (强调我的)文件可能被另一个应用程序锁定或使用。

file.canRead()返回什么?


现在您已经使用更多数据更新了问题,我可以看到您误解了错误消息。错误是您正在调用抛出某种类型的异常的方法,并且您没有正确报告或处理异常。您可以为try添加catch / FileNotFoundException,也可以在方法声明中添加throws,声明可以抛出FileNotFoundException

答案 1 :(得分:0)

尝试使用单斜杠而不是像

那样的双斜杠
C:/User/Documents/your Filename.

并使用Backward Slash因为您的文件将继承在以下目录中 为ex:

写下这样的路径
C:\User\Documents\Your Filename.