相对于java中的绝对路径

时间:2014-05-27 18:49:15

标签: java path relative-path

我有一个文件,我想在资源包中的项目中使用

src.res

按照this answer中的说明,我相信我的代码是有效的。

File fil = new File("/res/t2.nii");
// Prints C:\\res\\t2.nii
System.out.println(fil.getAbsolutePath());  

问题是我的那个文件不在我的项目文件中,所以我得到了一个例外。

我想如何正确地从相对路径转换为绝对路径?

3 个答案:

答案 0 :(得分:3)

首先尝试使用目录提供目录的绝对路径,然后使用file.exists()方法检查文件是否存在。

File fil = new File("res");  // no forward slash in the beginning

System.out.println(fil.getAbsolutePath());  // Absolute path of res folder

查找File Path & Operations

的更多变体

必须阅读What Is a Path? (And Other File System Facts)

上的Oracle Java教程
  

路径是相对路径或绝对路径。

绝对路径始终包含查找文件所需的根元素和完整目录列表。

例如,/res/images是绝对路径。


相对路径需要与其他路径合并才能访问文件。

例如,res/images是相对路径。如果没有更多信息,程序将无法在文件系统中可靠地找到res/images目录。

答案 1 :(得分:1)

由于您使用的是Java包,因此如果要加载资源,则必须使用类加载器。 e.g:

URL url = ClassLoader.getSystemResource("res/t2.nii");
if (url != null) {
    File file = new File(url.toURI());
    System.out.println(file.getAbsolutePath());
}

您可以注意到ClassLoader.getSystemResource("res/t2.nii")返回用于读取资源的URL对象,如果找不到资源,则返回null。下一行将给定的URL转换为抽象路径名。

Preferred way of loading resources in Java中查看更多内容。

答案 2 :(得分:0)

使用

进行验证
if (fil.exists()) { }
之前

并检查它是否真的存在。如果没有,那么您可以使用

获取当前路径
System.getProperty("user.dir"));

验证你是从正确的道路开始的。

如果你真的想要访问路径,你就不应该使用absolut pathes /因为它将从你的Harddisk的根开始解释。

你可以通过使用我在上一个答案中写的海报来获取res文件夹的absolut路径:

File fil = new File("res");  
System.out.println(fil.getAbsolutePath());