源码]java合并两个文件,hashtable去重。

来源:互联网 发布:淘宝问答入口 编辑:程序博客网 时间:2024/05/15 10:36

合并两个文件,使用hashtable去掉文件里每行重复的字符。

test.txt

中华
人民
共和国
万岁

insert.txt

伟大

毛主席
中华
人民
共和国

上述两个文件放到程序对应路径,D:/tmp。

IntegrateFile.java

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Enumeration;
import java.util.Hashtable;

public class IntegrateFile {

 /**
  * 读取文件,存入数组,以行为单位.
  * @param filename 文件路径
  * @param splitStr 间隔符
  * @return
  */
 public String[] readFile(String filename,String splitStr)
 {

  String outputStr = "";

  String[] words = null;

  Hashtable ht = new Hashtable();

  try
  {
   FileReader file = new FileReader(filename);
   BufferedReader br=new BufferedReader(file);

   String line="";
   int i = 0;

   //System.out.println("begin");
   while((line=br.readLine())!=null ){

    //System.out.println("line:" + line);
    outputStr += line + splitStr;

   }
   words = getStringArray(outputStr,splitStr);
   //System.out.println("end");

   br.close();
   
  }catch(Exception e){
   System.out.println("readFile errors:" + e.getMessage());
  }

  return words;

 }
 
 /**
  * hash存储,合并两个输入文件,写出新文件
  * @param simplefile  输入文件一
  * @param insertfile  输入文件二
  * @param outfile     输出文件
  * @param splitStr    数组判断间隔符
  */
 public void hashStore(String simplefile,String insertfile,String outfile,String splitStr){

  Hashtable ht = new Hashtable();

  String[] simplewords = null;

  String[] sogouwords = null;

  simplewords = readFile(simplefile,splitStr);
  
  System.out.println("simple len:" + simplewords.length);

  sogouwords = readFile(insertfile,splitStr);
  
  System.out.println("sogou len:" + sogouwords.length);

  for(int i=0; i<simplewords.length;i++){

   ht.put(simplewords[i], simplewords[i]);

  }

  for(int j=0; j<sogouwords.length; j++){
   
   //去重
   if(!ht.contains(sogouwords[j])){

    ht.put(sogouwords[j], sogouwords[j]);

   } 
  }

  Enumeration enumeration = ht.elements(); 
  
  try{
   
   BufferedWriter out = new BufferedWriter(new FileWriter(outfile));
   
   while (enumeration.hasMoreElements()) {
 
    String element = (String) enumeration.nextElement();
    
    out.write(element);
    out.newLine();
    
    System.out.println(element); 
   }
   
   out.close();
   
  }catch(Exception e){
   System.out.println("hashStore errors:" + e.getMessage());
  }
 }
 
 /**
  * 字符串分隔成数组
  * @param str  输入字符串
  * @param splitStr 间隔符
  * @return
  */
 public String[] getStringArray(String str,String splitStr){

  String[] words = str.split(splitStr);

  return words;
 }


 /**
  * test
  * @param args
  */
 public static void main(String[] args) {

  //String filename = "D://tmp//simplexu8.txt";

  String simple = "D://tmp//test.txt";

  String insert = "D://tmp//insert.txt";
  
  String outfile = "D://tmp//outtest.txt";

  String splitStr = ",";

  IntegrateFile up = new IntegrateFile();

  up.hashStore(simple, insert,outfile, splitStr);

 }

}

原创粉丝点击