Java 程序无法在 IntelliJ IDEA 中找到 CSV 文件 - FileNotFoundException

问题描述 投票:0回答:2

我正在使用 JavaIntelliJ IDEA 开发一个字符识别项目。我的程序需要从 CSV 文件加载训练和测试数据,但即使文件路径看起来正确,我也遇到了

FileNotFoundException
。 项目结构:

project-root/
  ├── .idea/
  ├── out/
  ├── src/
      ├── data/
          ├── mnist_test.csv
          ├── mnist_train.csv
      ├── layers/
      ├── network/
      └── Main.java
  └── README.md

代码片段:

public class Main {
    public static void main(String[] args) {
        System.out.println("Starting data loading.....");
        List<Image> imagesTest = new DataReader().readData("src/data/mnist_test.csv");
        List<Image> imagesTrain = new DataReader().readData("src/data/mnist_train.csv");

        System.out.println("Images Train size:" + imagesTrain.size());
        System.out.println("Images Test size :" + imagesTest.size());

        // Other code...
    }
}

DataReader 类:

package data;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

public class DataReader {

    private final int rows = 28;
    private final int cols = 28;

    public List<Image> readData(String path) {
        List<Image> images = new ArrayList<>();
        try (BufferedReader dataReader = new BufferedReader(new FileReader(path))) {
            String line;
            while ((line = dataReader.readLine()) != null) {
                String[] lineItems = line.split(",");
                double[][] data = new double[rows][cols];
                int label = Integer.parseInt(lineItems[0]);
                int i = 1;
                for (int row = 0; row < rows; row++) {
                    for (int col = 0; col < cols; col++) {
                        data[row][col] = (double) Integer.parseInt(lineItems[i]);
                        i++;
                    }
                }
                images.add(new Image(data, label));
            }
        } catch (Exception e) {
            throw new IllegalArgumentException("File not found " + path);
        }
        return images;
    }
}

尽管文件位于正确的目录(src/data/)中,但我收到以下错误: 错误信息:

Exception in thread "main" java.lang.IllegalArgumentException: File not found src/data/mnist_test.csv
    at data.DataReader.readData(DataReader.java:62)
    at Main.main(Main.java:23)

我尝试过的:

  • 我已仔细检查 CSV 文件是否位于 src/data/ 目录中。
  • 我已确保代码中的文件路径正确。
  • 我已经检查了 IntelliJ IDEA 中的工作目录设置,但我可能遗漏了一些东西。

我怀疑该问题可能与 IntelliJ IDEA 中的工作目录配置有关,但我不确定如何正确设置它,或者是否有其他问题导致程序无法找到文件。

如何正确配置 IntelliJ IDEA 或我的代码以确保程序可以找到 mnist_test.csv 和 mnist_train.csv 文件?

java java-io filenotfoundexception
2个回答
0
投票

可能是权限问题,尝试使用绝对路径来检查是否不是这个问题。 如果使用绝对路径的代码有效,您应该使用类路径路径来加载任何文件

 ClassLoader classLoader = Main.class.getClassLoader();
 URL resource = classLoader.getResource("data/mnist_test.csv");

0
投票

您正在project-root/src/data中搜索nist_test.csv和mnist_train.csv,但是,您犯的错误是您假设您正在执行源代码,而实际上您正在执行构建的项目,它可能位于项目根/输出处。因此,您需要确保您的数据文件夹及其中的文件在您的工作目录(即project-root/out)中可用。

© www.soinside.com 2019 - 2024. All rights reserved.