Java FileOutputStream:与程序文件夹相对的路径?

问题描述 投票:4回答:5

有什么办法可以找到相对于 "安装 "java程序的文件夹的路径?

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

当我用绝对路径调用它时,它就会工作, 但我真正想要的是相对路径,以找到应用程序运行的地方,以及一个文件夹。

我还没有部署我的应用程序,但现在我想找到一个相对于(Netbeans)项目根目录的路径,以及一个叫做data的文件夹。ProjectName/data/file.dat. 我是否应该使用 File 类,或将其制作成一个 URI 或什么?

请注意,我更希望它是独立于系统的,如果应用程序被部署,它仍然可以工作。最终,(相对)路径名会被存储在 属性 文件。

如果这个问题是重复的,很抱歉,希望得到任何帮助。

java file path fileoutputstream
5个回答
5
投票

怎样才能找到一个相对于 "安装 "java应用程序的文件夹的路径?

操作系统厂商一直在说,很长一段时间 不得 保存在应用程序目录下的文件。

请注意,我更希望它与系统无关,如果应用被部署,仍然可以使用。

而不是把 File 在...中 sub-directoryuser.home. 用户家园是应该可以建立一个可以读写的文件对象的地方。 这也是一个跨运行可重现,且与平台无关的地方。


2
投票

如果你是以jar的形式部署,可以像这样获取当前代码工作的jar文件名和路径。

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

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


1
投票

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

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

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


1
投票

你看这里。

String path = System.getProperty("user.dir");

0
投票

要得到一个文件的绝对路径,使用new File().getCanonicalFile().

new FileOutputStream(new File(".\\target\\dataset.xml").getCanonicalFile())
© www.soinside.com 2019 - 2024. All rights reserved.