Java:在.jar-file的目录中使用files.write()创建文件



我正在尝试制作一个程序,该程序在jar-file目录中创建文本文件。为此,我使用类 files

    Files.write(Paths.get("Test.txt"), "foo.txt".getBytes(), StandardOpenOption.CREATE);

我注意到,当我导出程序并通过键入 java -jar program.jar.jar.jar test.txt.txt 文件是创建的取决于我从中启动的目录。

示例:

program.jar位于〜/桌面中。

  1. 我在默认目录(主目录(中启动终端。我键入Java -jar桌面/program.jar。---> test.txt是在〜。

  2. 中创建的
  3. 我在默认目录中启动终端,然后键入CD桌面,然后在〜/desktop中创建Java -jar program.jar ---> test.txt。

我认为原因是paths.get((调用fileSystems.getDefault((,该filesystems.getdefault((将终端目录返回为程序的" root"。当我在桌面上启动GUI应用程序,该应用程序使用与上述相同的方法创建文件时,该文件也是在主目录中创建的,我认为可能是因为在双击命令Java-jar〜/Desktop上/guipragram.jar称为

我的想法对吗?我该怎么做才能实现与程序在同一目录中创建文件的目标?最后,我想要一个GUI应用程序,因此始终将终端和CD使用到桌面目录中不是解决方案。我必须使用另一个类进行I/O操作吗?我很想继续使用文件,因为它是如此简单和简短。

预先感谢您的帮助!

如此问题所述,您可以通过这样的奇数操作找到JAR文件的路径:

  String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
      String decodedPath = URLDecoder.decode(path, "UTF-8");

找到JAR文件的路径后,您可以将此路径作为路径的第一个参数传递。get方法:

Files.write(Paths.get(decodedPath,"Test.txt") , "foo.txt".getBytes(), StandardOpenOption.CREATE);

最新更新