错误的绝对文件路径

时间:2019-04-27 14:17:35

标签: java

我需要一个名为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

为什么绝对文件路径会打印出来?后台发生了什么,如何更改它以获取正确的文件路径?

2 个答案:

答案 0 :(得分:6)

这是因为,当您查找文件时,默认目录是项目目录(在本例中为FinalProject

我对项目进行了如下构造

enter image description here

Main.javaGameDatabase.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对象(此文件不存在),然后打印它存在时的绝对路径。