java 文件统计

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;


public class FileRobert {
	private static FileRobert robert = new FileRobert();
	private static int parentFloaderCount = 1;
	public void digPath(String path, Map<String,FileWrapper> callBackMap){
		File file = new File(path);
		if(file.isFile()){
			String location = file.getAbsolutePath();
			String key = FileWrapper.extractKey(location);

			if(callBackMap.containsKey(key)){
				
				FileWrapper wrapper = callBackMap.get(key);
				wrapper.appendNext(new FileWrapper(file.getAbsolutePath()));
			}else{
				
				FileWrapper wrapper =  new FileWrapper(file.getAbsolutePath());
				
				if(parentFloaderCount>1){
					wrapper.apendPrefix();
				}
				callBackMap.put(key,wrapper);
			}

		}else{
			File flist[] = file.listFiles();
			for(File subFile :flist){
				String subPath = subFile.getAbsolutePath();
				digPath(subPath,callBackMap);
			}
		}
	}
	
	public static void main(String[] args) throws Exception {

	URL url = FileRobert.class.getProtectionDomain().getCodeSource().getLocation();
	System.out.println(url.getPath());
	File newFile ;
	FileWriter write ;
	BufferedWriter bufferedWriter;

		if(args.length==3){
			String path = args[0];//"D:/UAT/AP";
			String path2 = args[1];//"D:/UAT/AP2";
			newFile = new File(args[2]+"\\log.csv");
			write = new FileWriter(newFile,true);
			bufferedWriter = new BufferedWriter(write);
			if(newFile.exists()){
				newFile.delete();
			}else{
				newFile.createNewFile();
			}
			
			Map<String,FileWrapper> callBackMap = new HashMap<String,FileWrapper>();
			robert.digPath(path, callBackMap);
			parentFloaderCount++;
			robert.digPath(path2, callBackMap);
			 bufferedWriter.write("KEY,FILE1,SIZE,FILE2,SIZE"); bufferedWriter.newLine();
			for(String key :callBackMap.keySet()){
				String data = callBackMap.get(key).toString();
	          bufferedWriter.write(data);
	          bufferedWriter.newLine();
			}
			bufferedWriter.flush();
			write.close();
			bufferedWriter.close();
		}else{
			 System.out.println("please input parm1=path1,parm2=path2,param3=csv file path");
				Thread.sleep(2000);
		}
		
		

	}
	

}



import java.io.File;


public class FileWrapper {
	private final static String REPLACEMENT_STR = "*";
	private final static String REPLACEMENT_PATTERN = "0{1,}\\d{2}";
	private String fileWrapperName;
	private String location;
	private String fileSimpleName;
	private long size;
	private int page;
	private String next="";
	private String prefix="";
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return 
		
		this.getFileWrapperName()+","
		+prefix
		+this.getLocation()+","
		+this.getSize()+","
		+this.next+",";
	}

	
	
	public FileWrapper(String filePath) {
		super();
		this.location = filePath;
		//System.out.println(filePath);
		File file = new File(filePath);
		this.setSize(file.length());
		setKey();
	}
	public String getKey(){
		return this.getFileWrapperName();
	}

	public void setKey(){
		
		String location = this.getLocation();
		String key = extractKey(location);
		this.setFileWrapperName(key);
	}



	public static String extractKey(String location) {
		String strArray[] = location.split("\\\\");
		StringBuffer sb = new StringBuffer();
		int startIdx = 0;
		for(String s :strArray){
			startIdx++;
			if(startIdx>3){
				sb.append("\\"+s);
			}
		}
		return sb.toString().replaceAll(REPLACEMENT_PATTERN, REPLACEMENT_STR);
	}
	
	
	public String getFileWrapperName() {
		return fileWrapperName;
	}

	public void setFileWrapperName(String fileWrapperName) {
		this.fileWrapperName = fileWrapperName;
	}

	public String getLocation() {
		return location;
	}

	public void setLocation(String filePath) {
		this.location = filePath;
	}

	public String getFileSimpleName() {
		return fileSimpleName;
	}

	public void setFileSimpleName(String fileSimpleName) {
		this.fileSimpleName = fileSimpleName;
	}

	public long getSize() {
		return size;
	}

	public void setSize(long size) {
		this.size = size;
	}

	public int getPage() {
		return page;
	}

	public void setPage(int page) {
		this.page = page;
	}



	public void appendNext( FileWrapper wrapper) {
		// TODO Auto-generated method stub
		next = wrapper.getLocation()+","+wrapper.getSize();
	}



	public void apendPrefix() {
		// TODO Auto-generated method stub
		prefix+=",,";
	}



	

}

你可能感兴趣的:(java)