【发布时间】:2018-04-02 08:56:22
【问题描述】:
我正在尝试制作一个在 jar 文件目录中创建文本文件的程序。为此,我使用类 Files:
Files.write(Paths.get("Test.txt"), "foo.txt".getBytes(), StandardOpenOption.CREATE);
我注意到,当我导出程序并通过键入 java -jar Program.jar 从控制台启动它时,Test.txt 文件所在的目录是created 取决于我从中启动它的目录。
例子:
Program.jar 位于 ~/Desktop 中。
我在默认目录 ~(主目录)中启动终端。我输入 java -jar Desktop/Program.jar。 ---> Test.txt 在~中创建。
我在默认目录下启动终端并输入 cd Desktop 然后 java -jar Program.jar ---> Test.txt 在 ~/Desktop 中创建。
我认为原因是 Paths.get() 调用 FileSystems.getDefault() 将终端目录作为程序的“根”返回。 当我在桌面上启动一个使用与上述相同方法创建文件的 GUI 应用程序时,该文件也在主目录中创建,我认为这可能是因为双击命令 java-jar ~/Desktop /GUIProgram.jar 被调用。
我的想法对吗?我可以做些什么来实现在与程序相同的目录中创建文件的目标?最后,我想要一个 GUI 应用程序,所以它不是始终使用终端和 cd 到桌面目录的解决方案。我是否必须使用另一个类进行 I/O 操作?我很乐意继续使用 Files,因为它非常简单和简短。
提前感谢您的帮助!
【问题讨论】:
-
你检查this了吗?
标签: java file input output nio