【问题标题】:Programm with "read/write into .txt-file" -> Export to .jar -> Common implementation?具有“读/写.txt文件”的程序->导出到.jar->通用实现?
【发布时间】:2014-01-05 17:52:35
【问题描述】:

我有一个程序,我可以在其中读取和写入 .txt 文件。 我的计划是,我创建一个包含 .txt 文件的“res”文件夹。 “res”文件夹被添加到构建路径中,如果我将此项目导出到 .jar 文件,如果只有一个包含 .txt 文件的 .jar 文件。

但现在我知道,无法写入 .jar 文件。

我现在的实际计划是,我不将“res”文件夹添加到构建路径中,将 projekt 导出为 .jar 文件,将 .jar 文件放在“我的程序”文件夹中,然后将“ res”文件夹也进入“我的程序”文件夹。然后它应该可以工作,但我发现这个解决方案很脏......

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

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

【问题讨论】:

  • 可写文件不应与您的程序位于同一文件夹中。要么让用户选择他想要保存内容的位置(就像您喜欢的文本编辑器一样),要么写入用户主目录的特定子目录中的特定文件(例如在HOME/.yourProgram/preferences.txt 中)
  • Java 应用程序当然可以写入 jar 文件。只是不是他们自己的 jar 文件。

标签: java file-io jar


【解决方案1】:

根据您在 .txt 文件中存储的确切数据类型,您可能希望考虑使用 Preferences API,这是一种存储配置信息的标准方法,您需要从程序运行一次到下一个。这是一个跨平台的 API,它以适当的方式存储您运行的任何平台的数据 - Windows 上的注册表中,Mac 上 ~/Library 下的 .plist 文件中,以及用户主目录中的隐藏文件中在 Linux 上(但您不需要关心后端,API 在所有情况下都是相同的)。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 在我的 .txt 文件中,我编写和读取了一个 List-Object,它不断地改变他的内容。
    • 您的意思是,您将对象序列化为文件?那么也许,根据您的结构,值得考虑使用嵌入式数据库。无论如何,这不是关于表示,而是关于应用程序设计。尝试将应用程序状态捆绑在一个 jar 中是不明智的,即使它是可能的。事实上的标准是应用程序应该将它们的设置和资源存储在相应的存储中。您不希望最终分发以前保存的用户密码,例如,当应用程序 jar 复制到另一个用户的机器时。
    【解决方案3】:

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

    集成数据库为JavaDB.,包含在JDK中。

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-24
      • 2012-01-31
      • 2014-06-01
      • 2019-03-16
      • 1970-01-01
      • 2010-10-09
      • 2013-01-04
      • 2016-07-10
      • 2014-01-26
      相关资源
      最近更新 更多