是否有一个工具可以告诉我一个或多个属性文件中的冗余键和值。
答案 0 :(得分:4)
/**
* Purpose: Properties doesn't detect duplicate keys. So this exists.
* @author shaned
*/
package com.naehas.tests.configs;
import java.util.Properties;
import org.apache.log4j.Logger;
public class NaehasProperties extends Properties
{
private static final long serialVersionUID = 1L;
private static final Logger log = Logger.getLogger(NaehasProperties.class);
public NaehasProperties()
{
super();
}
/**
* @param defaults
*/
public NaehasProperties(Properties defaults)
{
super(defaults);
}
/**
* Overriding the HastTable put() so we can check for duplicates
*
*/
public synchronized Object put(Object key, Object value)
{
// Have we seen this key before?
//
if (get(key) != null)
{
StringBuffer message = new StringBuffer("Duplicate key found: " + key + " with value: " + value);
message.append(". Original value is: " + (String) get(key));
log.error(message.toString());
// Setting key to null will generate an exception and cause an exit.
// Can not change the signature by adding a throws as it's not compatible
// with HashTables put().
//
// If you commented out this line, you will see all the occurrences of the duplicate key
// as the put will overwrite the past encounter.
//
key = null;
}
return super.put(key, value);
}
}
答案 1 :(得分:3)
有一个Ant任务RscBundleCheck,用于检查一组资源文件中是否存在重复键:
http://rscbundlecheck.sourceforge.net/
这是将重复属性检查集成到构建过程中的简单方法。
答案 2 :(得分:1)
我不知道是否有现有工具,但您应该能够编写一个简短的java程序,或者用您熟悉的语言编写脚本,以便立即执行此操作。然后你也可以将它用于将来使用。
快速谷歌搜索产生了以下http://www.javanb.com/netbeans/1/19793.html
这有一个gui工具和一个可以执行此操作的脚本。
答案 3 :(得分:1)
在Netbeans上有一个sort line tools插件,可以选择删除重复项。如果属性是一个内衬,则可以完美地工作。
此外,对属性进行排序可使此文件更易读。
答案 4 :(得分:0)
编写一个文件可能最简单:对于每个文件以及该文件中的每个属性,将属性键/值对放入Map中,但只有在确保该键不在Map中之后。如果是,则打印出文件名,密钥和两个值。
答案 5 :(得分:0)
如果您使用的是IDE,您可能会在其插件/功能中找到一个好工具。
Eclipse有一个ResourceBundle Editor插件,用于管理属性文件:
http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-331.html
IntelliJ IDEA 8及更高版本还可以管理属性文件并检查重复的条目。
答案 6 :(得分:0)
我使用了两个不错的工具
unival npm软件包:这是用于检测重复的键,值或行的命令行工具。
npm命令安装软件包:npm i unival
unival 扩展名:如果您使用vscode,这对动态检测重复项非常有用。