试图查找给定路径中是​​否存在文件

时间:2012-10-08 21:32:17

标签: java filepath

我对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,因此这应该适用于相对路径(同一目录中的文件)和来自根的绝对路径。我怎么处理这个?

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

3 个答案:

答案 0 :(得分:1)

这似乎是因为运行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指出的那样 -

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

然后相对路径为:

bin/test.txt

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