Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t从可运行jar文件访问文件_Java_File_Jar - Fatal编程技术网

Java Can';t从可运行jar文件访问文件

Java Can';t从可运行jar文件访问文件,java,file,jar,Java,File,Jar,所讨论的代码很简单,大致如下 File f = new File("Testfile.txt"); f.createFile(); 该文件稍后将写入。此代码位于可执行jar文件中。当它通过“java-jarjarname.jar”被执行时,它可以正常工作,但是当它通过普通的双击被启动时,它就不工作了。什么也没发生。到目前为止,情况似乎是这样的,因为以某种方式创建的文件实际上并不表示jar文件所在目录中的文件,但这只是一个假设。简而言之:如何从通过双击运行的可运行jar中创建和编辑文件 提前谢谢

所讨论的代码很简单,大致如下

File f = new File("Testfile.txt");
f.createFile();
该文件稍后将写入。此代码位于可执行jar文件中。当它通过“java-jarjarname.jar”被执行时,它可以正常工作,但是当它通过普通的双击被启动时,它就不工作了。什么也没发生。到目前为止,情况似乎是这样的,因为以某种方式创建的文件实际上并不表示jar文件所在目录中的文件,但这只是一个假设。简而言之:如何从通过双击运行的可运行jar中创建和编辑文件

提前谢谢

到目前为止,情况似乎是这样的,因为以某种方式创建的文件实际上并不表示jar文件所在目录中的文件,但这只是一个假设

对。没有。它表示当前工作目录中的文件。双击时会发生什么完全取决于双击的设置方式。可能是根目录

简而言之:如何从通过双击运行的可运行jar中创建和编辑文件


为什么??为什么要在写入之前创建文件?不要这样做。创建文件的时间是在创建文件输出流或编写器时。如果失败,您也会得到一个异常,它比
File.createFile()
返回的布尔值更有用,在任何情况下您都会忽略它。

这个问题的性质不同:文件确实是创建的-问题是它们是在执行用户主目录中创建的,您很容易错过它们(并且不想要它们)。解决方案是获取执行的jar文件的当前位置,如下所述:

我希望这有帮助,
干杯!

您可以让它出现“未找到文件”抛出异常,并让它打印一条消息,列出所搜索的目录和所搜索的文件。这不是答案,而是找到可能的解决方案的一步。@DarkJade没有例外,因为一切都正常工作-只是不是它应该的方式:)“创建和编辑”如中所示“我想编辑一个文件,但也可以编辑一个文件”。例如,对于mkdir和列表文件。写入文件部分稍后会出现:)为什么要列出空文件?uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。