我有Groovy代码来读取属性文件并更改值,然后将其写入同一文件.
def props = new Properties()
File propsFile = new File('C:/Groovy/config.properties')
props.load(propsFile.newDataInputStream())

props.each { key,value ->

    if("${key}" == "ABC"){
        props.setProperty("${key}","XYZ")

    }

}
props.store(propsFile.newWriter(),null)

当我将属性写入文件时,它会更改键的顺序.有没有办法维持与初始文件相同的顺序.

我是groovy的新手,请有人给出这个建议吗?

解决方法

我检查了属性类,结果证明它扩展了Hashtable,它没有对其元素的排序做出任何保证.所以这就是输出文件混淆了键的原因.

在我看来,你必须至少覆盖两个方法:put,为每个属性调用(按顺序发生),以及在保存期间调用的键.您只需使用此类而不是属性.

import java.util.*;

public class OrderedProperties extends Properties {
    private final LinkedHashSet<Object> keyOrder = new LinkedHashSet<>();

    @Override
    public synchronized Enumeration<Object> keys() {
        return Collections.enumeration(keyOrder);
    }

    @Override
    public synchronized Object put(Object key,Object value) {
        keyOrder.add(key);
        return super.put(key,value);
    }
}

我刚刚在你的场景中测试它并且它工作正常,但我肯定没有想到所有可能的情况.我们在这里扩展Hashtable(小心!),这不是我说的通常的决定……

grails – 如何在Java属性文件中维护键的顺序?的更多相关文章

  1. 浅析HTML5中的download属性使用

    这篇文章主要介绍了浅析HTML5中的download属性使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. ios – 访问文件属性与访问sqlite记录

    >看到上述结果后,我决定选择attributesOfItemAtPath方法.还有什么我不是考虑传递sqlite?

  3. ios – 如果要使用主要的故事板文件,应用程序委托必须实现该窗口属性

    我以编程方式实现列表视图控制器当我尝试运行该项目时,我有错误:当我运行代码时,它挂在main.m上,并显示“thread1:signalSIGABRT”我的代码如下:AppDelegate.hAppDelegate.mFirstViewController是列表视图控制器.解决方法您正在将窗口创建为局部变量,然后尝试通过使用self.window来访问它,就像它是一个属性一样.使它成为一个财产.

  4. ios – 在实现文件中声明属性是一个很好的做法,如果是,有什么用?

    是以下代码,一个很好的编程实践在Objective-C?

  5. xcode – Swift Constants文件 – 类还是结构?

    我想在我的Swift项目中创建一个Constants文件–填充静态let字符串.我应该创建一个结构还是一个类?

  6. ios – 不能在另一个文件的扩展中使用私有属性

    我不能在扩展中使用私有财产.我的扩展名在另一个文件中.我怎样才能在扩展中使用私有财产?

  7. ios – 用于 – 在Counterparts中的ViewController.swift(接口)文件是什么

    有人可以这么善良并解释这个文件的目的是什么?

  8. 【swift】15-0520 字典

    字典.count()字典.isEmpty字典[key]=value//增加一个值字典[key]=value2//修改一个值字典.updateValue//返回一个optional类型的值,需要更新的key不存在则更新失败,所以一般用if语句进行判断,if字典.updateValue{println}else{println}用binding显示出值。iflet常量=字典.updateValue{println(“”)}else{println(“”)}显示字典中所有的键值对:forin字典{println

  9. Swift-字典

  10. Swift 字典的常用方法

    /***要正确使用字典,也需要一些条件*1,字典键值对的键和值的类型必须明确,可以直接指定,也可以类似数组直接赋值由编译器自动识别*2,字典必须要初始化*3,键的类型必须是可以被哈希Hashable的**///字典的几种声明方式常用方法见下方代码苹果开发群:414319235欢迎加入欢迎讨论

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部