【问题标题】:How to get absolute path of files outside the current working directory [java]如何获取当前工作目录之外的文件的绝对路径 [java]
【发布时间】:2016-03-19 10:47:00
【问题描述】:

我正在尝试使用 Java 中的 FileURL 类读取当前工作目录之外的文件。我知道当前工作目录默认由.“表示”。

假设我的Java类在/folders/Desktop/MyClass.java下,如果我想读取/folders/Desktop/file1.txt中的一个文件file1.txt,我可以这样做:

URL url = getClass().getResource("./file1.txt");  /* or "./anotherFolder/../file1.txt", or simply "file1.txt"*/
File f = new File(url.getPath());

一切都按预期进行。

但是我应该怎么做才能读取不在当前工作目录中且不在其子目录中的文件?例如,如果文件的路径是/folders/file1.txt?我到处搜索,但找不到任何东西。我尝试了../file1.txt./../file1.txt 和其他人,但没有任何效果。也许我错过了什么,或者我没有在正确的地方搜索。

【问题讨论】:

  • new FIle("/folders/file1.txt") 有什么问题?
  • 该指令没有任何问题,它适用于我的情况。当我想读取不在当前工作目录的子目录中的文件时会出现问题。特别是,当我尝试创建 File 类的实例时,会引发 java.lang.NullPointerException。
  • 我的意思是不使用资源,只使用新文件(文件名)。只要路径正确,文件就可以在任何地方。文件名不为空时如何抛出NPE?
  • 哦..它有效!非常感谢!!!我不知道为什么我还没有尝试过。

标签: java file path absolute-path working-directory


【解决方案1】:

如果你没有给出文件名的路径,那么 java 会在应用程序运行的目录中搜索。

示例:

如果文件在项目的主文件夹中,这将打印true...

public static void main(String[] args) {
        final File foo = new File("asd.txt");
        System.out.println(foo.exists());
    }

编辑:

如果文件不在该文件夹中,那么您可以使用“./”或“../”运算符在文件夹结构中“向上”移动... 或者深入文件夹File("/src/asd.txt"),例如该文件位于 src 文件夹中..

【讨论】:

  • 是的,我知道。事实上,我对当前工作目录及其子目录中的文件没有任何问题。没有项目!!!
【解决方案2】:

如果您想访问不在当前工作目录下的文件,您可以通过编程方式遍历文件系统,或者通过用户输入获取绝对路径并使用new File(absolutePathAsString) 构造java.io.File 对象。您也可以考虑使用更新的 java.nio.file API。

【讨论】:

    猜你喜欢
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    相关资源
    最近更新 更多