0

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

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

4

3 回答 3

1

似乎是因为您的eclipse程序运行的当前目录不是所在的目录test.txt。另请注意,这/InputParser/bin/test.txt是绝对路径,而InputParser/bin/test.txt,或是./InputParser/bin/test.txt相对路径。您可以在 wikipedia 上找到有关路径的更多详细信息(查看类 Unix)

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

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

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

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

于 2012-10-08T21:35:18.567 回答
1

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

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

那么相对路径将是:

bin/test.txt

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

于 2012-10-08T21:44:32.657 回答
1

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

于 2012-10-08T21:40:00.187 回答