首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据附加到属性文件,注释消失,数据顺序更改

将数据附加到属性文件,注释消失,数据顺序更改
EN

Stack Overflow用户
提问于 2013-07-02 13:38:42
回答 3查看 9.7K关注 0票数 7

将数据附加到属性文件时,现有注释消失,数据顺序正在更改。请建议如何避免这种情况?

属性文件中的数据(追加数据前)和注释如下:

代码语言:javascript
复制
# Setting the following parameters 
# Set URL to test the scripts against
App.URL = https://www.gmail.com
# Enter username and password values for the above Test URL
App.Username = XXXX
App.Password = XXXX

我正在向上述属性文件中添加更多数据,如下所示:

代码语言:javascript
复制
 public void WritePropertiesFile(String key, String data) throws Exception
{       
    try 
    {
        loadProperties();  
        configProperty.setProperty(key, data);
        File file = new File("D:\\Helper.properties");
        FileOutputStream fileOut = new FileOutputStream(file);
        configProperty.store(fileOut, null);
        fileOut.close();
    } 
    catch (Exception e) 
    {
        e.printStackTrace();
    }
}

调用上述函数a,如下所示:

代码语言:javascript
复制
help.WritePropertiesFile("appwrite1","write1");
help.WritePropertiesFile("appwrite2","write2");
help.WritePropertiesFile("appwrite3","write3");

数据添加成功,但是先前输入的注释将消失,数据的顺序也会更改,属性文件(追加数据后)显示如下

代码语言:javascript
复制
#Tue Jul 02 11:04:29 IST 2013
App.Password=XXXX
App.URL=https\://www.gmail.com
appwrite3=write3
appwrite2=write2
appwrite1=write1
App.Username=XXXX

我希望数据追加到最后,不想更改顺序,也不想删除之前输入的注释。请告诉我是否有可能实现我的要求?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-02 14:14:52

我最近遇到了同样的问题,在StackOverflow上找到了以下答案:https://stackoverflow.com/a/565996/1990089。它建议使用Apache Commons配置API来处理属性文件,这允许保留注释和空格。然而,我自己还没有尝试过。

票数 10
EN

Stack Overflow用户

发布于 2013-07-02 13:45:39

保留属性文件的注释并不直接。java.util.Properties上没有处理注释的方法。读取文件时,注释将被忽略。因为当我们执行properties.load时,只有键值对被加载,因此当您将其保存回来时,注释会丢失。检查下面的链接,有一个解决方案可以实现您需要的,但不是优雅的方式:

http://www.dreamincode.net/forums/topic/53734-java-code-to-modify-properties-file-and-preserve-comments/

票数 3
EN

Stack Overflow用户

发布于 2017-06-16 15:13:57

如果您不想从属性文件中删除您的内容。只需读取并替换文件中的字符串即可。

代码语言:javascript
复制
    String file="D:\\path of your file\abc.properties";     
    Path path = Paths.get(file);
    Charset charset = StandardCharsets.UTF_8;

    String content = new String(Files.readAllBytes(path), charset);
    content = content.replaceAll("name=anything", "name=anything1");
    Files.write(path, content.getBytes(charset));

上面的代码不会从文件中删除内容。它只是替换了文件中的部分内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17418106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档