【问题标题】:how to resolve The system cannot find the file specified error?如何解决系统找不到指定文件的错误?
【发布时间】:2019-12-28 14:14:06
【问题描述】:

对于一个项目,我需要读取一个包含 pokemon 数据的 csv 文件,我尝试创建一种方法,允许我在 csv 文件中查找数据,如下所示:

private final String fileName = "./data/pokedex.csv";
String line = "";
private final String separator = ",";
private List<String> getPokeInfoById(int id) {
        int i = 0;
        List<String> info = null;
        BufferedReader br;
        try {
            br = new BufferedReader(new FileReader(fileName));
            while ((line = br.readLine()) != null) {
                if (i == id) {
                    try (Stream<String> stream = Arrays.stream(line.split(","))) {
                        info = stream.collect(Collectors.toList());
                    }
                } else {
                    i++;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        return info;
    }

但是java说:

java.io.FileNotFoundException: data\pokedex.csv (The system cannot find the file specified)
    at java.base/java.io.FileInputStream.open0(Native Method)
    at java.base/java.io.FileInputStream.open(FileInputStream.java:213)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:155)
    at java.base/java.io.FileInputStream.<init>(FileInputStream.java:110)
    [...]

这是我的 src 的样子:

    C:.
├───controleur
├───data
│       grid_types.csv
│       moves.csv
│       pokedex.csv
│
├───img
├───model
│   │   Pokemon.java
│   │   Type.java
│   │
│   └───analyzer
│           Pokedex.java
│
└───test
        PokedexTest.java

【问题讨论】:

  • fileName 的值是多少?并检查该文件是否存在于该路径中。
  • 通过将路径传递给实际存在的文件。请注意,您的路径是相对路径,因此会针对 current 目录进行解析,该目录是执行 java 命令的目录。就像你输入notepad data\pokedex.csv一样,它会在当前目录包含的数据目录中查找文件pokedex.csv。
  • 我添加了我的文件夹树,我的方法在 pokedex.java 中,我尝试在 PokedexTest.java 中使用它对我来说一切正常
  • 你完全没有抓住重点。再次阅读我的评论。您的课程名称完全无关紧要。重要的是 current 目录。如果您从c:\ 执行java MyProgram,它将查找文件c:\data\pokedex.csv。如果您从c:\foo\bar\baz 执行java MyProgram,它将查找文件c:\foo\bar\baz\data\pokedex.csv
  • 我用System.out.println(new File("."). getAbsolutePath()); 看看我在哪里,我能看到它,谢谢

标签: java csv bufferedreader


【解决方案1】:

尝试在文件名中提供完整路径

【讨论】:

  • 所以问题是我的项目需要放在 USB 驱动器上,所以他的完整路径会改变:/
【解决方案2】:

所以看来我的路径是错误的,因为我没有注意我当前的目录正在使用什么

System.out.println(new File("."). getAbsolutePath());

帮助我找到了自己并找到了正确的道路

【讨论】:

    猜你喜欢
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 2016-09-19
    • 2012-03-02
    • 2011-09-17
    • 1970-01-01
    相关资源
    最近更新 更多