我对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,因此这应该适用于相对路径(同一目录中的文件)和来自根的绝对路径。我怎么处理这个?
是否可以从根目录搜索该文件的绝对路径并将其附加到文件名中?
答案 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的更多信息。