我有一个文件,我想在资源包中的项目中使用
src.res
按照this answer中的说明,我相信我的代码是有效的。
File fil = new File("/res/t2.nii");
// Prints C:\\res\\t2.nii
System.out.println(fil.getAbsolutePath());
问题是我的那个文件不在我的项目文件中,所以我得到了一个例外。
我想如何正确地从相对路径转换为绝对路径?
答案 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
的更多变体
路径是相对路径或绝对路径。
绝对路径始终包含查找文件所需的根元素和完整目录列表。
例如,/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转换为抽象路径名。
答案 2 :(得分:0)
使用
进行验证if (fil.exists()) { }
之前并检查它是否真的存在。如果没有,那么您可以使用
获取当前路径System.getProperty("user.dir"));
验证你是从正确的道路开始的。
如果你真的想要访问路径,你就不应该使用absolut pathes /因为它将从你的Harddisk的根开始解释。
你可以通过使用我在上一个答案中写的海报来获取res文件夹的absolut路径:
File fil = new File("res");
System.out.println(fil.getAbsolutePath());