java比较文件_读取输出文件_正则表达式匹配

上传人:飞*** 文档编号:20638704 上传时间:2017-11-22 格式:DOC 页数:5 大小:31.50KB
返回 下载 相关 举报
java比较文件_读取输出文件_正则表达式匹配_第1页
第1页 / 共5页
java比较文件_读取输出文件_正则表达式匹配_第2页
第2页 / 共5页
java比较文件_读取输出文件_正则表达式匹配_第3页
第3页 / 共5页
java比较文件_读取输出文件_正则表达式匹配_第4页
第4页 / 共5页
java比较文件_读取输出文件_正则表达式匹配_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《java比较文件_读取输出文件_正则表达式匹配》由会员分享,可在线阅读,更多相关《java比较文件_读取输出文件_正则表达式匹配(5页珍藏版)》请在金锄头文库上搜索。

1、package com.lhs;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import jav

2、a.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;import java.util.regex.Matcher;import java.util.regex.Pattern;/* 比较 2 个文件的内容,输出不一样的部分* * 涉及到的重要知识点有:* java 读取文件,输出文件* java 正则表达式匹配* * * 2 个文件内容是:中文 英文,然后分别比较中文部分和英文部分,文件内容如下:520 香烟 520cigarette678 月 678yueA-zone A-zoneA.O.史密斯 AOsmsA

3、CE 床垫 ACEAOL 时代华纳 Time WarnerBMG 唱片 Bertelsmann Music GrBRAPPERS BRAPPERSCosta 咖啡 Costa Coffee唐娜凯伦 Donna Karan New York* author lihsh* version 1.0*/public class FileCompare /*数据量比较少的那个文件 */ private Map fileLessMap = new LinkedHashMap();/*数据量比较多的那个文件 */private Map fileMoreMap = new LinkedHashMap();/*

4、比较结果:中文名和英文名都相同 */private Map sameKey_sameValueMap = new LinkedHashMap();/*比较结果:中文名相同,英文名不同 */private Map sameKeyMap = new LinkedHashMap();/*正则表达式匹配:中文 */private String regChinese = u4E00-u9FA5+;/*正则表达式匹配:英文 */private String regEnglish = a-zA-Z0-9+.*a-zA-Z*;public static void main(String args) FileC

5、ompare fileCompare = new FileCompare();fileCompare.start();/* 入口*/public void start()readFile(config/brand_c2e 按中文排序.txt, fileLessMap);readFile(config/all-pingpai-zh-en20131022.TXT, fileMoreMap);compare();write2file(sameKey_sameValueMap, config/sameKey_sameValue.txt);write2file(sameKeyMap, config/sa

6、meKey.txt/);/* 读取文件到 map 中* param file 文件路径* param fileMap 存储的 map*/private void readFile(String file, Map fileMap) BufferedReader br = null;String line = ;try br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(file), UTF-8);while(line = br.readLine() != null) parse(line, fil

7、eMap); catch (FileNotFoundException e) e.printStackTrace();catch (IOException e) e.printStackTrace();finally if(br != null) try br.close(); catch (IOException e) e.printStackTrace();/* 解析出一行中的中文和英文,并存储在 fileMap 参数中* param line 从文件中读取的行* param fileMap 存储的 map*/private void parse(String line, Map file

8、Map) String chinese = regParse(line, regChinese).toLowerCase();String english = regParse(line, regEnglish).toLowerCase();fileMap.put(chinese, english);/* 正则表达式匹配行* param line 从文件中读取的行* param reg 正则表达式* return 匹配的结果*/private String regParse(String line, String reg)Pattern pattern = Ppile(reg);Matcher

9、 matcher = pattern.matcher(line);String group = ;while(matcher.find() group = matcher.group();return group;return group;/* 比较 2 个 map,结果存放到另外的 map 中*/public void compare() for(Iterator it = fileLessMap.keySet().iterator(); it.hasNext();) String key = it.next();String value = fileLessMap.get(key);boo

10、lean containsKey = fileMoreMap.containsKey(key);boolean valueEqual = false;String value2 = fileMoreMap.get(key);if(containsKey) valueEqual = value2.equalsIgnoreCase(value);if(containsKey & valueEqual) System.out.println(找到一样的中文名和英文名: + key + : + value);sameKey_sameValueMap.put(key, value);else if(co

11、ntainsKey & !valueEqual) System.out.println(找到一样的中文名,但英文名不一样: + key + / + value + : + key + / + value2);sameKeyMap.put(key + / + value, key + / + value2);/* 把 map 中的结果输出到文件中* param map 待输出的 map* param file 输出文件全路径*/private void write2file(Map map, String file) BufferedWriter bw = null; try bw = new

12、BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(file), UTF-8);for(Iterator it = map.keySet().iterator(); it.hasNext();) String key = it.next();String value = map.get(key);bw.write(key + , + value);bw.newLine();bw.flush(); catch (FileNotFoundException e) e.printStackTrace();catch (IOException e) e.printStackTrace();finally if(bw != null) try bw.close(); catch (IOException e) e.printStackTrace();可以到这里下载全部代码和测试数据:http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号