我对这种行为感到非常困惑。
我有一个想要读取的 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()
打印到我的控制台以检查路径是否相同以及它们是否相同。
如果我对路径进行硬编码,为什么我的代码可以工作,但在动态完成时却失败了?