1

我有一个可执行的 jar 文件,我希望它能够读取和写入与 .jar 文件位于同一目录的 txt 文件的信息。我怎样才能做到这一点?如何获取可执行的 jar 文件 dir 路径。它只需要在windows平台上工作,它是一个桌面应用程序。

4

4 回答 4

1

Class.getProtectionDomain().getCodeSource().getLocation() will return the location of the JAR that contains the class you called it on, if it's in a JAR.

However see also Andrew Thompson's answer.

于 2012-06-17T00:58:49.877 回答
1

创建新文件不需要指定完整路径,java 默认会在当前工作目录中创建新文件。

于 2012-06-16T17:45:07.540 回答
1

以下代码片段将为您执行此操作:

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

替换MyClass为您的main班级

结果File对象f表示.jar已执行的文件。您可以使用此对象获取文件所在的目录并使用它来构建目录路径。

于 2012-07-31T19:52:22.943 回答
1

我有一个可执行的 jar 文件,我希望它能够读取和写入与 .jar 文件位于同一目录的 txt 文件的信息。

不要那样做!大多数操作系统制造商长期以来一直在说不要将应用程序和应用程序数据放在同一个地方。应用程序数据的最佳位置是user.home.

例如

import java.io.File;

public class QuickTest {

    public static void main(String[] args) {
        String[] pkgPath = { "com", "our", "app" };
        File f = new File(System.getProperty("user.home"));
        File subDir = f;
        for (String pkg : pkgPath) {
            subDir = new File(subDir,pkg);
        }
        System.out.println(f.getAbsoluteFile());
        System.out.println(subDir.getAbsoluteFile());
    }
}
于 2012-06-16T18:22:34.227 回答