.exist() - 使用相对路径时文件不存在

.exist() - file does not exist, when using relative path

编辑:如果您遇到了这个问题,您很可能不熟悉工作目录这个概念。

我不知道这是否特定于 IntelliJ IDEA 的当前工作目录,或者我对相关文件的概念了解不够。我确实得出了解决我的问题的结论,但它给我留下了很多未解决的问题,我不喜欢只记住东西,我想理解它。这就是为什么我在这里问这个问题,提前谢谢你。

假设你有

  1. 一个 Class 叫 Main
  2. 一个名为 text1.txt
  3. 的文本文件

它们都位于文件夹 src

Mainclass你写了下面的代码

public class Main {

    public static void main(String[] args) {        
        // Scanner
        Scanner scanner = new Scanner(System.in);       
        // File object
        File myFile = new File("text1.txt");
        // Prints a String, that tells you if the file exists
        System.out.println("File exists = " + myFile.exists());
    }

}

Result: File exists = false

为什么会这样?

这个问题已经得到了很好的回答,但是,如果您觉得这对您来说还不够,那么请阅读下面的文章,它会更深入。

https://www.earthdatascience.org/courses/intro-to-earth-data-science/python-code-fundamentals/work-with-files-directories-paths-in-python/

绝对路径从文件系统根开始。将其与信件上的地址进行比较。邮递员知道把那封信投递到哪里。

相对路径不是目标地址。它更像是——当你看到加油站时,向左转。根据您来自哪个方向,您最终会到达其他不同的位置。

回到计算机:相对路径是根据当前工作目录计算的。您可以通过检查

从 java 程序中打印出来

How to get the current working directory in Java?

我通常会编写我的代码以更清楚地了解事件。下面的代码不仅会告诉它是否找到了文件,还会让你知道它在哪里搜索它。

        // File object
        File myFile = new File("text1.txt");

        // Prints a String, that tells you if the file exists
        System.out.println("File "+myFile.getAbsolutePath()+" exists = " + myFile.exists());