【问题标题】:FileReader can't find file despite file existing尽管文件存在,FileReader 仍找不到文件
【发布时间】:2016-02-14 19:29:49
【问题描述】:

我正在尝试使用 opencsv 库,但是我很早就遇到了 FileReader 无法找到我用来测试的 csv 的问题。

我有以下代码:

import java.io.File;
import java.io.FileReader;

public class Test {
public static void main(String[] args) {

    File f = new File("demo.csv");
    if(f.exists() && !f.isDirectory()) { 
        System.out.println("File exists");
    }
    else {
        System.out.println("File does not exist");
    }

    FileReader reader = new FileReader("demo.csv");
}
}

我在 FileReader 上收到 FileNotFoundException 错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unhandled exception type FileNotFoundException at Test.main(Test.java:19)

尽管使用 f.exist 检查了文件是否存在于正确的目录中。做了很多搜索,找不到任何解释。

有人可以帮忙吗?

【问题讨论】:

  • 您能否将您的示例更改为重现错误所需的最低限度?所以:转储 while-loop,添加 f.exists() 并最终删除对 opencsv 的依赖
  • @morido 我已经按照您的意思编辑了 OP。显然,当前的代码不会在 FileReader 上使用 FileNotFoundException 运行,但如果我注释掉该行,f.exists 会正确返回“文件存在”。即使我试图去一个绝对位置(可能我的格式错误)它仍然找不到它。
  • 1.使用System.getProperty("user.dir"); 检查您当前的工作目录 - demo.csv 必须驻留在该目录中才能使上述代码正常工作。 2.确保demo.csv的文件权限正确,这也会导致FileNotFoundException被抛出。
  • 请发布整个异常和消息。猜测您没有该文件的读取权限,但如果没有异常文本,则无法明确回答问题。
  • 按照指示检查工作目录,文件存在那里并且设置了读/写权限。完整的错误消息如下,从中添加并没有多大用处我不认为:Exception in thread "main" java.lang.Error: Unresolved compilation problem: Unhandled exception type FileNotFoundException at Test.main(Test.java:19) 不知道还能尝试什么。在某个时候,我会看看我是否在不同的系统上得到相同的结果。这可能与 FileReader 不喜欢那个特定的 csv 文件本身有关吗?我也试试。

标签: java compiler-errors filereader filenotfoundexception


【解决方案1】:

检查文件扩展名是否可见并且您的文件未命名为 demo.csv.csv。发生在我身上,花了我一段时间才解决。

【讨论】:

  • 我认为可能是这种情况 - 已经尝试过,不要认为这是原因。不过感谢您的建议。
【解决方案2】:

默认情况下,编译器会在根目录中查找“demo.csv”。确保在 FileReader 参数中明确指定路径。 在我的情况下,相同的代码确实有效(在根目录下提供了 demo.csv)

【讨论】:

  • 正如我所说,对其进行 f.exists 检查表明该文件存在。它在我认为根目录应该在的位置。 FileReader 是否可能在其他地方而不是在根目录中?
  • 默认情况下,编译器会在根目录中查找“demo.csv”。 - 这是不正确。这里也没有涉及任何“编译器”(因此,无法静态检查该文件的存在 - 无论如何这没有多大意义),操作系统(想想,Windows)也不一定具有“根目录”的概念。因此,Java 在此处默认为其 user.dir 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2022-01-14
  • 2014-03-05
  • 2023-03-08
相关资源
最近更新 更多