【问题标题】:Modifying Property File [duplicate]修改属性文件 [重复]
【发布时间】:2014-04-14 21:32:27
【问题描述】:

我有一个包含不同数据的属性文件。我需要更新属性的值。如何使用 Java 实现这一点?

我的属性文件包含:

# 安装程序的模块密码
MODULE_PASSWORD=Mg==

# 为安装程序选择的模块
ausphur=是
einfuhr=否
edec=否
emcs=否
ncts=否
苏玛=否
易=否
zollager=否

我需要更改是或否值。

【问题讨论】:

标签: java


【解决方案1】:

在属性文件中创建一个FileOutputStream,并使用Properties.setProperty(PROPERTY_NAME,PROPERTY_VALUE)修改属性,然后在Properties实例上调用store(out,null)

        FileOutputStream out = new FileOutputStream("config.properties");
        props.setProperty("ausphur", "no");
        props.store(out, null);
        out.close();

这会有所帮助!

更新:

由于Properties 对此一无所知,因此无法挽留您的 cmets。如果您使用java.util.Properties,它是Hashtable 的子类,它不会按照插入方式保留键和值的顺序。您可以做的是,您可以使用自己的Properties 数据存储实现来收集LinkedHashMap。但是,您必须自己从文件中读取属性并将其放入LinkedHashMap。需要注意的是,LinkedHashMap 保留了放置键值的顺序。因此,您可以迭代 keyset 并以相同的顺序更新属性文件。因此,可以保留顺序

【讨论】:

  • 否。文件内容已更改。但其顺序已更改,并且缺少一些 cmets
  • 如果你能找到答案对我会有帮助
  • 我不认为 cmets 会被保留,因为文件是用内存中的属性重写的。属性的顺序也不会保留。我仍然对您的预期输出感到困惑。请澄清
  • 你是对的。属性的顺序没有保留。我需要保留它。
  • 请使用您自己的实现尝试LinkedHashMap
【解决方案2】:

您可以使用 Properties Java 类。
它允许您以非常简单的方式处理基于(键、值)对的属性文件。
看看http://docs.oracle.com/javase/tutorial/essential/environment/properties.html
特别是:

保存属性

以下示例使用 Properties.store 写出上一个示例中的应用程序属性。 >默认属性不需要每次都保存,因为它们永远不会改变。

FileOutputStream out = new FileOutputStream("appProperties");
applicationProps.store(out, "---No Comment---");
out.close();
store 方法需要一个要写入的流,以及一个在输出顶部用作注释的字符串。

【讨论】:

    【解决方案3】:

    试试这个。
    属性 prop = new Properties(); OutputStream 输出 = null;

            output = new FileOutputStream("config.properties");
    
            // set the properties value
            prop.setProperty("propertyname", "newValue");
            prop.store(output, null);
    

    【讨论】:

      【解决方案4】:

      使用 java.util.Properties。

          Properties props = new Properties();
          FileInputStream fis = new FileInputStream("pathToYourFile");
          props.load(fis);
          fis.close();
          props.setProperty("propName", "propValue");
          FileOutputStream fos = new FileOutputStream("pathToYourFile");
          props.store(fos, "Your comments");
          fos.close();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        • 2010-09-21
        相关资源
        最近更新 更多