我需要一个名为GameDatabase.csv
的csv文件的相对路径。它与我的main
方法位于同一文件夹中,两者均位于zzz
文件夹中。
找不到文件,因此我决定打印绝对路径
String db = "GameDatabase.csv";
File file = new File(db);
String path = file.getAbsolutePath();
System.out.print("\npath " + path);
输出为
path xxx\IdeaProjects\CISC_231\FinalProject\GameDatabase.csv
但是我要寻找的路径是
xxx\IdeaProjects\CISC_231\FinalProject\zzz\GameDatabase.csv
为什么绝对文件路径会打印出来?后台发生了什么,如何更改它以获取正确的文件路径?
答案 0 :(得分:6)
这是因为,当您查找文件时,默认目录是项目目录(在本例中为FinalProject
)
我对项目进行了如下构造
Main.java
和GameDatabase.csv
都在src
import java.io.File;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
System.out.println(new File("GameDatabase.csv").exists()); // the file does not exist in FinalProject folder
System.out.println(new File("src/GameDatabase.csv").exists()); // but exists in FinalProject/src
System.out.println(Main.class.getClassLoader().getResourceAsStream("GameDatabase.csv").toString()); // this is a solution to look for the file within the classpath
}
}
输出为
false
true
java.io.BufferedInputStream@7852e922
答案 1 :(得分:2)
String db = "GameDatabase.csv";
File file = new File(db)
您可以创建一个File对象,该对象表示实际上不存在的文件。完成的操作是在当前工作目录中创建一个代表文件"GameDatabase.csv"
的File对象(此文件不存在),然后打印它存在时的绝对路径。