对比两个文件,并输出相等的部分

//比较两个文件,其中A文件每行有三个关键字,A1\A2\A3,B文件每行有2个关键字,B1\B2
// 找出A2=B2的那一行,并输出该行的 A1~B2的值(输出到一个新文件中)

import java.io.*;
import java.util.HashMap;
//比较两个文件,其中A文件每行有三个关键字,A1\A2\A3,B文件每行有2个关键字,B1\B2
// 找出A2=B2的那一行,并输出该行的 A1~B2的值(输出到一个新文件中)
public class FileWriterTest {

    public static void main(String[] args) throws IOException {
        Reader f1 = new FileReader("C:\\Users\\zhangxiaocui\\Desktop\\word.txt");
        BufferedReader a1= new BufferedReader(f1);
        Reader f2 = new FileReader("C:\\Users\\zhangxiaocui\\Desktop\\word1.txt");
        BufferedReader a2 = new BufferedReader(f2);

        Writer f3 = new FileWriter("C:\\Users\\zhangxiaocui\\Desktop\\result.txt");
        BufferedWriter a3= new BufferedWriter(f3);

        String line;
        String line1,line2;
        HashMap<String,String> result = new HashMap<>();
//        读取第一个文件,并将文件中A2关键字与该行内容记录下来
        while((line = a1.readLine())!=null){
            line1=line.split("\\s+")[1];
            result.put(line1,line);
        }
//        读取第二个文件,并找出B2关键字与A2相等的那一行
        while((line = a2.readLine())!=null){
            line2 = line.split("\\s+")[1];
            if(result.containsKey(line2)){
//                写入对应的B行的值
                a3.write(line);
//                换行
                a3.newLine();
//                写入对应的A行的值
                a3.write(result.get(line2));

                a3.flush();
                a3.close();
                break;
            }
        }
    }

}

 

posted on 2021-06-30 11:00  cStream  阅读(260)  评论(0)    收藏  举报