源文件按照標籤分割,以標籤爲文件名分類保存分割後的文件

package cn.readtxt;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class StringCountOfFile {
	
	   public static void main(String argv[])throws Exception{
		   
	        File fileSrc=new File("D:\\bill\\test.txt");
	        if(!fileSrc.exists()){
	            throw new Exception("目錄不存在");
	        }
	        
	        BufferedReader fin=new BufferedReader( new FileReader(fileSrc) );
	        String line;
	        Map<String, Integer> counter= new HashMap<String, Integer>();
	        while( (line=fin.readLine())!=null){
	        	String[] str = line.split("\\|");//文件以13002927346|a270,g0,h0,i0格式保存
	        	String key = str[1];//以標籤作爲key保存到map
				if(counter.containsKey(key)){
                    counter.put(key, counter.get(key)+1);
                }else{
                    counter.put(key, 1);
                }
				File fileLabel = new File("D:\\bill" + File.separator + key.replaceAll(",", ""));
				if (!fileLabel.exists()) {
					fileLabel.createNewFile();
				}
				
				//每個字符的個數
//	            int len = line.length();
//	            for(int i=0; i<len; i++){
//	                char c=line.charAt(i);
//	                if(!( (c>='0' && c<='9') || (c>='A' && c<='Z') || (c>='a' && c<='z') ) ){
//	                    continue;
//	                }
//	                if(counter.containsKey(c)){
//	                    counter.put(c, counter.get(c)+1);
//	                }else{
//	                    counter.put(c, 1);
//	                }
//	            }
	        }
	        fin.close();
	        
	        int sum = 0;
	        for(Iterator<String> it=counter.keySet().iterator(); it.hasNext(); ){
	        	BufferedReader reader=new BufferedReader( new FileReader(fileSrc) );
	        	String key=it.next();
	        	int count=counter.get(key);
	            System.out.println("標籤:" + key+" --- "+count);
	            StringBuffer sb= new StringBuffer("");
	            while( (line=reader.readLine())!=null){
	            	if (line.contains(key)) {
	            		sb.append(line+"\r\n");
					}
	            }
	            BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\bill" + File.separator + key.replaceAll(",", "")));
		        bw.write(sb.toString());
		        bw.close();
		        reader.close();
	            sum += count;
	        }
	        System.out.println("總記錄數:" + " --- "+sum);
	        
	    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章