动态查找项目的目标

时间:2013-10-08 23:12:58

标签: java

我可以使用:

的getClass()getClassLoader()的getResource( “”)的getPath());

动态获取项目中Class文件的路径。

但是我需要为项目的主目录动态获取路径。我不能静静地这样做,如下:

文件文件=新文件(“C:\ Users \ etc ...”);

因为项目的目的地可以从一台计算机更改为下一台计算机。我需要在项目的主目录中调用一个文件。我该如何动态地做到这一点。它类似于我在这个问题的开头所做的事情,但它不仅仅适用于类。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

Java中没有“java项目”这样的东西。如果你知道你的类文件与你想要找到的目录有什么关系,你可以使用你在第一个例子中获得的路径:

Url classUrl = ...
File resourcePath = new File(classUrl.toUri());
File rootDir = resourcePath.getParentFile().getParentFile().getParentFile();

File rootDir = new File(resourcePath.getPath() + 
    "/../../../".replace("/", File.separatorChar));

当然,只有文件实际上在文件系统上时,这才会起作用;如果它们在一个罐子里,你需要找到jar文件。

但这通常不是你想要做的事情。通过将沙箱作为命令行参数或环境变量传递给应用程序,为应用程序配置沙箱是一种更好的做法。在某些情况下,使用预定义的系统属性(如user.homeuser.dirjava.io.tmpdir)也很有用。