Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 有没有一种方法可以写入JAR中的文件?_Java_Eclipse_Jar_Preferences_Fileoutputstream - Fatal编程技术网

Java 有没有一种方法可以写入JAR中的文件?

Java 有没有一种方法可以写入JAR中的文件?,java,eclipse,jar,preferences,fileoutputstream,Java,Eclipse,Jar,Preferences,Fileoutputstream,我目前正在使用java类首选项来维护java应用程序内部的首选项。它很简单,目前只包含2个键/值对。该项目的一些高层已经要求将preferences.xml文件保存在JAR中,以使其干净地运行,因此所有内容都将在JAR中自包含(用户不需要能够访问该文件) 我知道preferences使用InputStream进行导入,使用OutputStream进行导出。是否仍然可以使用outputStream编辑jar中的文件 我认为不可能使用OutputStream在jar中编辑文件 你能做的是: 您可以导

我目前正在使用java类首选项来维护java应用程序内部的首选项。它很简单,目前只包含2个键/值对。该项目的一些高层已经要求将preferences.xml文件保存在JAR中,以使其干净地运行,因此所有内容都将在JAR中自包含(用户不需要能够访问该文件)


我知道preferences使用InputStream进行导入,使用OutputStream进行导出。是否仍然可以使用outputStream编辑jar中的文件

我认为不可能使用OutputStream在jar中编辑文件

你能做的是: 您可以导入该文件,对其进行编辑并将其添加回jar文件。
要将文件推入jar,请参阅

我认为不可能使用OutputStream编辑jar中的文件

你能做的是: 您可以导入该文件,对其进行编辑并将其添加回jar文件。
要将文件推送到jar中,请参考

jar文件是一个zip文件夹,因此可以使用包对其进行提取和处理

但是,运行的jar可能是写保护的,从而防止内容修改

它更适合将配置存储在操作系统中的相应位置。在windows上,公用位置是windows注册表

有一个Java库用于编辑注册表,如中所示

图书馆资料来源:

要在其他操作系统上存储配置,可以使用以应用程序命名的文件夹中的文件

  • Linux上的公用位置:“~/.config”文件夹
  • Mac上的公用位置:“~/Library/Application Support”文件夹

JAR文件是一个zip文件夹,因此可以使用包对其进行提取和处理

但是,运行的jar可能是写保护的,从而防止内容修改

它更适合将配置存储在操作系统中的相应位置。在windows上,公用位置是windows注册表

有一个Java库用于编辑注册表,如中所示

图书馆资料来源:

要在其他操作系统上存储配置,可以使用以应用程序命名的文件夹中的文件

  • Linux上的公用位置:“~/.config”文件夹
  • Mac上的公用位置:“~/Library/Application Support”文件夹

不可能,但这是否回答了您的问题?(您可能更喜欢不被接受的答案,并且您应该遵循被接受的答案)我建议在您的jar中有一个默认配置文件,您可以在还没有默认配置文件的情况下为用户安装。仅使用jar运行应用程序仍然是可能的,它让每个用户都有自己的首选项,如果多个用户在多用户机器上使用相同的.jar,这仍然有效。正确的方法和所有多平台应用程序的做法是将默认值存储在.jar文件中,并使用文件系统中的已知位置,即用户主目录下的某个位置来存储任何更改。如果文件不存在,您应该通过复制.jar中存储的默认值来创建它。(请注意,Preferences类在Windows中不使用Preferences.xml文件,除非您选择了Preferences。)不可能,但请参见,这是否回答了您的问题?(您可能更喜欢不被接受的答案,并且您应该遵循被接受的答案)我建议在您的jar中有一个默认配置文件,您可以在还没有默认配置文件的情况下为用户安装。仅使用jar运行应用程序仍然是可能的,它让每个用户都有自己的首选项,如果多个用户在多用户机器上使用相同的.jar,这仍然有效。正确的方法和所有多平台应用程序的做法是将默认值存储在.jar文件中,并使用文件系统中的已知位置,即用户主目录下的某个位置来存储任何更改。如果文件不存在,您应该通过复制.jar中存储的默认值来创建它。(请注意,Preferences类在Windows中不使用Preferences.xml文件,除非您选择Preferences。)实际上,存储此类信息的更好位置是%AppData%下的文件。或者Linux中的
~/.config
,或者OS X中的
~/Library/Application Support
。感谢@VGR更新了答案以反映。实际上,存储此类信息的更好位置是%AppData%下的文件。或者Linux中的
~/.config
,或者OS X中的
~/Library/Application Support
。谢谢@VGR更新了答案以反映。