【问题标题】:trying to find if a file exists in a given path尝试查找给定路径中是​​否存在文件
【发布时间】:2012-10-08 21:32:16
【问题描述】:

我对 java 还很陌生,我正在尝试查找 LINUX 路径中指定的文件是否存在。

private void validateFilePath(String filePath) {

        File dir = new File(filePath);

        if(dir.exists()){
                System.out.println("File exists in the path " + dir);
                setTARGET_IMG_DIR("filePath");
                return; 
        }else{
            System.out.println("File does not exists in the path: " + dir);
            return;
        }

    }

如果我像这样从根目录提供绝对路径,则 dir.exists 可以正常工作

/Users/yv/Documents/Eclipse-workspace/InputParser/bin/test.txt

但是如果我给出一个相对路径 test.txt/InputParser/bin/test.txt 表示文件不存在。

我正计划创建这个项目的 jar,因此这应该适用于相对路径(同一目录中的文件)和来自根目录的绝对路径。我该如何处理?

是否可以从根目录搜索该文件的绝对路径并将其附加到文件名中?

【问题讨论】:

  • 试试System.out.println(dir.getAbsolutePath()); 看看这是否真的是你所期望的
  • 是的路径 /InputParser/bin/test.txt 我得到的输出相同。

标签: java filepath


【解决方案1】:

Eclipse 通常使用设置为user.dir 的项目目录运行,这是执行的基本目录。所以如果绝对路径是:

/Users/yv/Documents/Eclipse-workspace/InputParser/bin/test.txt

那么相对路径就是:

bin/test.txt

您可以通过从 Java 的系统属性中获取 user.dir 属性来仔细检查工作目录。有关 Java 系统属性的更多信息check the documentation

【讨论】:

  • 所以 dir.exists() 足以确定文件是否存在,只要用户给出的路径有效?我不必担心将相对转换为绝对?
  • 根据我的经验,是的,dir.exists() 应该足够了。我认为如果您尝试导航超出抽象路径的边界(例如在抽象路径不包含父目录时调用“getParent”),您只会遇到抽象路径的麻烦。
【解决方案2】:

将项目根目录添加到您的类路径并使用Class.getResource() 来检查是否存在,并使用Class.getResourceAsStream() 来读取文件的内容。无论您的文件是在文件系统中还是在 jar 中,这都是一样的。

【讨论】:

    【解决方案3】:

    这似乎是因为你的eclipse程序运行的当前目录不是test.txt所在的目录。还要注意/InputParser/bin/test.txt是绝对路径,而InputParser/bin/test.txt./InputParser/bin/test.txt是相对路径。你可以在wikipedia (look at Unix-like)找到更多关于路径的细节

    现在,要找出 eclipse 运行程序的目录,您可能需要添加

    System.out.println(System.getProperty("user.dir"));
    

    -在您的程序中,正如 Alex 指出的那样-

    编辑:更改命令以获取当前目录

    【讨论】:

    • 在运行 dir.getAbsolutePath 之后,似乎 eclipse 正在我的 bin 目录中运行它。我的 bin 中有 test.txt,并将 test.txt 作为输入。它不起作用
    • 谢谢,我想通了。 Eclipse 使用用户目录作为基本目录,我很困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-17
    • 2012-06-18
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多