1

我知道系统属性“user.dir”返回当前工作目录;包含当前正在运行的文件的目录。

我想知道,我怎样才能走得更远?我需要找到当前的工作文件。我正在编写一个有点像自动更新程序的小应用程序,我需要知道需要更新的文件。例如,如果我从C:/test.jar运行一个文件,我想在代码中实际知道正在运行的文件的当前位置是C:/test.jar以便我可以写入(新)数据给它。

我试过这样的方法:

    ClassLoader loader = Test.class.getClassLoader();
    System.out.println(loader.getResource("Test.class"));

但是,它打印出来:

3/5/12 7:50:16.914 PM [0x0-0x31031].com.apple.JarLauncher: rsrc:Test.class

(我在 Mac 上运行它——我从控制台得到了那条线)。任何帮助是极大的赞赏。谢谢!

4

2 回答 2

3

在以下帖子中 归功于Fab :来自当前运行的 jar 的 Jar 路径+名称

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");
于 2012-03-06T02:36:54.363 回答
0

这将打印当前文件的路径。

File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
        System.out.println(f.getPath());
于 2012-03-06T03:03:43.670 回答