源文件按照标签分割,以标签为文件名分类保存分割后的文件

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);
	        
	    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值