getResource 返回正确的路径,但 FileReader 无法读取文件

时间:2021-05-12 09:37:45

标签: java filereader

我对这种行为感到非常困惑。

我有一个想要读取的 csv 文件。

public static void openFileReader() {
    try {
        FileReader reader= new FileReader(
            "/C:/User/Path/JavaFX_Projekt/CSV_Manager/build/resources/main/tables/user.csv"
        );
        System.out.println(reader.read());
    } catch (FileNotFoundException e) {
        System.out.println(e.getMessage());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

这工作得很好,结果打印了 97。

但是,如果我将代码更改为:

private static final URL TABLES_FOLDER = CSVHandler.class.getResource("/tables/"); 

public static void openFileReader() {
    try {
        FileReader f = new FileReader(TABLES_FOLDER + "user.csv");
        System.out.println(f.read());
    } catch (FileNotFoundException e) {
        System.out.println(e.getMessage());
    } catch (IOException e) {
        e.printStackTrace();
    }
}

它失败了

<块引用>

file:\C:\User\Path\JavaFX_Projekt\CSV_Manager\build\resource\main\tables\user.csv(提供的文件名、目录或文件描述的语法错误)

但是,如果我复制粘贴此路径并使用它可以工作的硬编码路径创建 FileReader。 (正如我在第一个示例中所做的那样)

我将 TABLES_FOLDER.toString() 打印到我的控制台以检查路径是否相同以及它们是否相同。

如果我对路径进行硬编码,为什么我的代码可以工作,但在动态完成时却失败了?

0 个答案:

没有答案