0

我可以用:

getClass().getClassLoader().getResource("").getPath());

在我的项目中动态获取类文件的路径。

但我需要动态获取项目主目录的路径。我不能静态地做到这一点,像这样:

文件 file = new File("C:\Users\etc...");

因为项目的目的地可以从一台计算机更改为下一台计算机。我需要调用项目主目录中的一个文件。我如何动态地做到这一点。这将类似于我在这个问题开始时的做法,但它不能只针对类。

任何想法?

4

1 回答 1

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 中,则需要找到 jar 文件。

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

于 2013-10-08T23:52:59.257 回答