4

找到相对于“安装”java应用程序的文件夹的路径的最佳方法是什么?

我有一个带有静态方法的类:public static void saveToFile(String fileName)

当我用绝对路径调用它时,它可以工作,但我真正想要的是运行应用程序的相对路径和一个文件夹。

我还没有部署我的应用程序,但现在我想找到一个相对于(Netbeans)项目根目录的路径,以及一个名为 data: ProjectName\data\file.dat的文件夹。我应该使用这个File类还是把它变成一个URI或什么?

请注意,我更喜欢它独立于系统,并且在部署应用程序时仍然可以工作。最终(相对)路径名将存储在属性文件中。

对不起,如果这个问题是重复的,任何帮助表示赞赏。

4

5 回答 5

5

找到相对于“安装”java应用程序的文件夹的路径的最佳方法是什么?

操作系统制造商长期以来一直在说不要将文件保存在应用程序目录中。

请注意,我更喜欢它独立于系统,并且在部署应用程序时仍然可以工作。

而是将. File_ 用户主目录应该可以建立一个可以读取或写入的文件对象。它也是一个跨运行可重现且独立于平台的地方。sub-directoryuser.home

于 2012-04-16T19:23:24.727 回答
2

如果您部署为 jar,则可以获得当前代码正在使用的 jar 文件名和路径,如下所示:

new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

(来自如何获取正在运行的 JAR 文件的路径?

于 2012-04-16T18:23:06.820 回答
2

干得好:

String path = System.getProperty("user.dir");
于 2013-01-05T02:56:08.107 回答
1

要查找当前工作目录的相对路径,请说new File(".").

如果你想知道当前工作目录的绝对路径,你可以写new File(".").getAbsolutePath()或 File(".").getAbsoluteFile()`。

我希望这回答了你的问题。如果我没有正确理解你,我很抱歉。

于 2012-04-16T18:22:01.900 回答
0

要获取文件的绝对路径,请使用 new File().getCanonicalFile()。

new FileOutputStream(new File(".\\target\\dataset.xml").getCanonicalFile())
于 2015-12-01T14:06:30.800 回答