【问题标题】:Can't remove properties java无法删除属性java
【发布时间】:2015-04-29 19:35:47
【问题描述】:

我正在尝试删除属性文件中的用户(密钥)和密码(密钥值),但删除它们后,我仍然可以使用用户名“登录”。我删除属性的代码是:

FileReader fileReader = new FileReader("File.properties");
        properties.load(fileReader);
        properties.remove(username);
        fileReader.close();

        FileWriter fileWriter = new FileWriter("File.properties", true);
        properties.store(fileWriter, "Updated");
        System.out.println(username + properties.getProperty(username));
        fileWriter.close();

这是执行代码后属性文件的样子。

2015 年 4 月 29 日星期三 21:31:27 CEST

userr=pass

更新 2015 年 4 月 29 日星期三 21:31:44 CEST

(已删除)

所以键和键值在新行中消失了,但它仍然在那里,我可以使用它。那么如何从属性文件中正确删除它呢? 对不起,如果它变得混乱。谢谢。`

【问题讨论】:

  • 我想我只是通过从文件写入器中删除“true”来解决它......我认为它会创建一个新的属性文件,并删除所有旧内容,包括我不想删除的值。

标签: java properties


【解决方案1】:

作为文档:

FileWriter(文件文件,布尔附加) 在给定 File 对象的情况下构造一个 FileWriter 对象。

因此,如果您在第二个参数中输入 true,您将附加到文件 donr 覆盖它。

【讨论】:

    【解决方案2】:

    看看官方FileWriter Javadoc。构造函数中的第二个参数是标志,用于决定是附加到文件(true)还是覆盖它(false)。因此,正如您自己注意到的那样,通过将其设置为true,您只会将属性附加到现有属性,而读取它们的任何内容都可能是从文件中获取第一个原始值。将其设置为false 应该可以解决您的问题。

    【讨论】:

    • 我认为将布尔附加设置为 true 会删除属性中的所有旧数据,这是我仍然不太了解的部分。我使用properties.load的部分是保存然后在我使用properties.store时应用的吗?因为它必须知道如何将旧数据从属性文件写入新文件。
    猜你喜欢
    • 1970-01-01
    • 2021-11-14
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多