如何从Java JAR文件中获取资源/文件的路径

时间:2010-10-14 03:15:35

标签: java resources jar filepath pathname

我正在尝试获取它位于java jar之外的文件的路径,我不想使用绝对路径。例子:假设jar位于〜/ lib / myjar.jar中,文件位于同一文件夹中。我尝试的是这样的,但它失败了:

File myfile = new File(this.getClass().getResource("../../../").toURI());

注意:我的包是com.contro.gui,这就是为什么我有“../../../”,以便访问“root”

我不确定如何访问该文件。有什么建议??如果我要访问的文件是在〜/ res / ???等其他文件夹中怎么办?

2 个答案:

答案 0 :(得分:4)

如果文件与jar在同一个目录中,我认为这样可行(感觉相当hacky,但是......):

URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
File myfile = new File(url.toURI());
File dir = myfile.getParentFile(); // strip off .jar file

(尚未对此进行测试,但似乎可行。当然只适用于基于文件的jar。)

如果文件位于某个随机位置,我认为您需要传递参数或检查“已知”位置,例如user.home。 (或者,您始终可以使用getResource()将文件放入jar中。)

答案 1 :(得分:0)

不,只做

     File FileName = new File(".");
     String Directory = FileName.getCanonicalPath();

它将在文件或jar中为您提供类的父目录,只需记住在这样的jar中设置目录" NameOfJar \ NameOfFolder \ etc"