【问题标题】:How to update or modify property file in web application如何在 Web 应用程序中更新或修改属性文件
【发布时间】:2013-04-15 12:28:26
【问题描述】:

我可以使用 InputStream 加载属性文件,但修改后无法更新。

FileOutputStream output = 
            new FileOutputStream("/src/main/resources/test.properties");
props.store(output, "Last Time the file have been modified at:");

如何更新?任何建议...

【问题讨论】:

  • 它已经问过了,只要通过这个你就会有一个想法stackoverflow.com/questions/7202765/…
  • 在继续发布不完整、无用和过于笼统的答案之前(例如,“使用公共配置,等等等等”没有以任何方式解释它究竟如何帮助 OP 的具体问题)试图收集一些简单的声誉,请注意 OP 正在开发 Java EE Web 应用程序,并且 OP 本质上是在尝试操作部署空间中的文件(他目前错误地认为是 IDE 的项目文件夹)。跨度>
  • 这个可以帮忙吗:FileOutputStream fos = new FileOutputStream (getServletContext().getRealPath("actual path under WEB-INF")); ?
  • 如果需要更新,最好不要将属性文件放在部署存档中。

标签: java jsf


【解决方案1】:

很难确定你在这里的真正意思,但它在我看来就像你希望你的 web 应用更新它使用 getResourcegetResourceAsStream 读取的属性文件。这可能很难甚至不可能,而且绝对是个坏主意。

最好的办法是将属性存储在 webapp 数据库的表中。但是,如果您没有数据库,那么您可以将属性文件存储在文件系统中的某个位置……前提是允许这样做。

唯一保证存在并可写入 webapp 的文件系统是它的临时文件空间:https://stackoverflow.com/a/2663250/139985。但当然,如果您选择和配置 Web 容器和/或主机操作系统,您可以找到其他(容器/操作系统特定的)位置来存储不太临时的状态。问题是您的解决方案可能是不可移植的。

【讨论】:

  • 您能否详细说明为什么使用getResourceAsStream 是个坏主意?由于其只读功能,这是一个坏主意吗?
  • 我并没有说使用getResourceAsStream 不好。我说尝试更新它是个坏主意。那是因为正在读取它的位置(文件、JAR 等)可能是只读的……而您的 web 应用程序无法知道。
猜你喜欢
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
相关资源
最近更新 更多