java 对比两个属性文件的key

来源:互联网 发布:科比历年数据 编辑:程序博客网 时间:2024/05/18 13:30
package tools.icd.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Properties;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 小程序:比对中英文properties文件,查找不匹配的key
 */
public class FilePropertiesCompare {
    private static Logger logger = LoggerFactory.getLogger(FilePropertiesCompare.class);
    
    private static String searchFileName1="messages.properties";
    private static File file;
    
    private static Properties properties;
    private static Properties properties_en_us;
    private FileInputStream fileInputStream;
    private FileInputStream fileInputStream_en_us;
    
    private static String path = "E:\\his_leopard\\leopard\\branches\\dev\\" ;
    
    private static String filePath_zw = "\\i18n\\"+"messages.properties";
    private static String filePath_en_us = "\\i18n\\"+"messages_en_US.properties";
    
    public  void findFileName(File f,String name) {
        file=new File(path);
        if(!file.isDirectory()){
            logger.info("must be directory");
        }
        File[] files=file.listFiles();
        logger.info("files size:"+files.length);
        logger.info("\n");
        
        for(int i=0;i<files.length;i++){
            String filePath = files[i].getPath();
            String fileName = files[i].getName();
            String filePath1 = filePath+"\\src\\" +fileName.replace(".", "\\") + filePath_zw;
            String filePath2 = filePath+ "\\src\\" +fileName.replace(".", "\\") + filePath_en_us;
            
            comparePropertiesFileKey(filePath1,filePath2);
        }
    }
    
    private void comparePropertiesFileKey(String filePath,String filePath_en_us) {
        properties = new Properties();
        properties_en_us = new Properties();
        try {
            fileInputStream = new FileInputStream(filePath);
            fileInputStream_en_us = new FileInputStream(filePath_en_us);
            properties.load(fileInputStream);
            properties_en_us.load(fileInputStream_en_us);
            
            Enumeration<?> key = properties.propertyNames();
            Enumeration<?> key_en_us = properties_en_us.propertyNames();
            
            List<String> keyList = new ArrayList<String>();
            List<String> keyList_en_us = new ArrayList<String>();
            
            while (key.hasMoreElements()) {  
                String keyName = (String) key.nextElement();
                keyList.add(keyName);
            }  
            while (key_en_us.hasMoreElements()) {  
                String keyName = (String) key_en_us.nextElement();
                keyList_en_us.add(keyName);
            }  
            
            /**比较两个属性文件中的key是否一样多*/
            if(keyList.size() != keyList_en_us.size()){
                logger.info("====================================================================================================");
                logger.info("\n");
                logger.info("size::"+keyList.size()+"《=====》size_en_us::"+keyList_en_us.size());
                logger.info("\n");
                logger.info("filePath_messages:"+filePath);
                logger.info("\n");
                logger.info("filePath_messages_en_US:"+filePath_en_us);
                logger.info("\n");
                logger.info("\n");
                logger.info("messages_en_US.properties缺少的文件:");
                logger.info("\n");
            }
                for (String name : keyList) {
                    if(!keyList_en_us.contains(name)){
                        logger.info(name+" = "+ properties.getProperty(name));
                        logger.info("\n");
                    }
                }
                fileInputStream.close();
                fileInputStream_en_us.close();
                logger.info("==================================================================================================");
                logger.info("\n");
            
        } catch (FileNotFoundException e) {
//            logger.info("读取文件====》失败!原因:文件路径错误或文件不存在.");
//            e.printStackTrace();
        } catch (IOException e) {
//            logger.info("装载文件====》失败.");
//            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        FilePropertiesCompare rf = new FilePropertiesCompare();
        rf.findFileName(file,searchFileName1);
    }
    
}

原创粉丝点击