Java 用“";“读取/写入.txt文件”-&燃气轮机;导出到.jar->;共同实施?

Java 用“";“读取/写入.txt文件”-&燃气轮机;导出到.jar->;共同实施?,java,file-io,jar,Java,File Io,Jar,我有一个程序,在这个程序中,我读/写一个.txt文件。 我的计划是,创建一个包含.txt文件的“res”文件夹。“res”文件夹被添加到buildpath中,如果我将这个项目导出到一个.jar文件,那么我只有一个包含.txt文件的.jar文件 但现在我知道,不可能写入.jar文件 我的实际计划是,现在我不将“res”文件夹添加到构建路径中,将projekt导出为.jar文件,将.jar文件放在“我的程序”文件夹中,并将“res”文件夹也放在“我的程序”文件夹中。那么它应该会起作用,但我发现这个解

我有一个程序,在这个程序中,我读/写一个.txt文件。 我的计划是,创建一个包含.txt文件的“res”文件夹。“res”文件夹被添加到buildpath中,如果我将这个项目导出到一个.jar文件,那么我只有一个包含.txt文件的.jar文件

但现在我知道,不可能写入.jar文件

我的实际计划是,现在我不将“res”文件夹添加到构建路径中,将projekt导出为.jar文件,将.jar文件放在“我的程序”文件夹中,并将“res”文件夹也放在“我的程序”文件夹中。那么它应该会起作用,但我发现这个解决方案很肮脏

这是常见的方法吗? 我最喜欢的是“包含所有内容的唯一一个.jar文件”,但这不起作用

另一种选择是:
我过去听说它存在一个用于java的“集成数据库”。如果我使用这样一个完整的数据库而不是My.txt文件,那么在这种情况下,我最喜欢的解决方案“只有一个.jar文件包括所有的”(

< p>),这取决于您在txt文件中存储的是什么样的数据,您可以考虑,这是一种存储配置信息的标准方法,您需要将配置信息从程序的一次运行保存到下一次运行。这是一个跨平台API,它以适当的方式为您运行的任何平台存储数据—在Windows上的注册表中,在Mac上的
~/Library
下的
.plist
文件中,以及在Linux上的用户主目录中的隐藏文件中(但您不需要关心后端,API在所有情况下都是相同的).

是否只需保存应用程序的状态即可在启动时加载?例如,只需将您的状态保存到用户主目录中的文件中,或文件系统中任何其他合适的位置。您也可以使用嵌入式数据库,但它最终还是磁盘上的一个文件

我过去听说它存在一个用于java的“集成数据库”

JDK中包含集成数据库

如果我使用这样一个集成的数据库而不是.txt文件,那么在这种情况下,我最喜欢的解决方案“只包含一个.jar文件和所有文件”是否可以使用


应用程序所需的任何额外可写文件(例如,在本例中,将数据存储在JavaDB数据库中的文件)都可以最初存储在jar中,然后复制到磁盘上的适当位置。您还可以制作一个单独的安装程序应用程序来执行此操作-这是Windows应用程序的标准方法。

可写文件不应与您的程序位于同一文件夹中。要么让用户选择保存内容的位置(就像您首选的文本编辑器),要么写入用户主目录特定子目录中的特定文件(例如在
home/.yourProgram/preferences.txt
中),Java应用程序当然可以写入jar文件。只是不是他们自己的jar文件。在我的.txt文件中,我写和读一个列表对象,它不断地改变他的内容。你的意思是,你将对象序列化到文件?然后,也许,根据您的结构,值得考虑使用嵌入式数据库。无论如何,这不是关于表示,而是关于应用程序设计。尝试将应用程序状态捆绑到jar中是不明智的,即使这是可能的。事实上的标准是应用程序应将其设置和资源存储在相应的存储器中。例如,当应用程序jar被复制到另一个用户的机器上时,您不希望最终分发以前保存的用户密码。