2

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

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

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

我不确定如何访问该文件。有什么建议吗??如果我要访问的文件位于 ~/res/ 之类的其他文件夹中呢?

4

2 回答 2

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. (或者,您可以随时将文件放入 jar 中getResource()。)

于 2010-10-14T03:33:26.240 回答
0

不只是做

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

这将使您在文件或 jar 中获得类的父目录,只要记住设置目录,如果它位于像这样的 jar 中“NameOfJar\NameOfFolder\etc”

于 2017-09-20T14:03:58.900 回答