`
wentise
  • 浏览: 23216 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

java 文件统计

    博客分类:
  • 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代码统计工具

    在这个场景中,我们关注的是一个名为"java代码统计工具"的应用,它专门用于统计.java文件中的代码行数和注释行数。这个工具包含了三个关键文件:`java代码统计工具.exe`是可执行程序,用户可以直接运行来执行统计;`...

    读取txt文件,统计“java”字符串出现的次数

    读取txt文件,统计“java”字符串出现的次数

    Java代码统计工具

    3. **按某目录及其子目录内.java文件统计**: 用户可以选择指定的目录,工具会递归地扫描该目录及其所有子目录内的.java文件进行统计。这种功能对于大型项目尤其有用,因为它可以快速处理整个源代码树,而无需手动...

    java综合性实验-对某个目录中的所有Java源程序文件统计

    编写一个Java应用程序,实现对某个目录中的所有Java源程序文件(包含该目录的子目录中的源程序文件)进行统计。统计内容包括: (1) 目录中每个源程序文件的总行数和空白行数,文件的字节数; (2) 目录中所有源程序...

    java 统计指定文件中的字符个数

    在Java编程语言中,统计指定文件中的字符个数是一项常见的任务,这主要涉及到文件I/O操作和字符流处理。下面将详细讲解如何实现这个功能,以及相关的重要知识点。 首先,要进行文件I/O操作,Java提供了`java.io`包...

    java 大文件ip 统计

    综上所述,Java大文件IP统计涉及的主要知识点有:Java文件I/O,流式处理,IP地址的处理与比较,数据结构(如HashMap和TreeMap)的选择,以及可能的并发和分布式计算。通过这些技术,我们可以高效地处理大文件中的IP...

    用JAVA语言统计文本文件中字母出现的频率

    用JAVA语言统计文本文件中字母出现的频率用JAVA语言统计文本文件中字母出现的频率

    java统计单个文件行数

    在Java编程语言中,统计一个文件的行数是一项常见的任务,尤其在数据分析、日志处理或者性能测试等场景。这个任务可以通过读取文件并逐行处理来实现。下面我们将详细探讨如何利用Java来统计单个文件的行数,并结合...

    java统计某文件或目录下指定类型文件数量及行数

    可以统计指定目录下指定文件类型的文件数量及行数 此文件是用jdk1.5编译的.如果说您的jvm不相符.请联系qq:361606472

    java智能源码统计专家

    10、支持Java文件 .java 的统计。 11、支持SQL文件 .sql 的统计。 12、支持 *.* 文件类型的自动分析统计。 13、支持自定义一次选择多个目录的统计方式。 14、支持用户自定义文件统计类型及统计方法。 15、支持htm,...

    Java词频统计程序MVC

    Java词频统计程序MVC是一种基于Java编程语言实现的、采用Model-View-Controller(MVC)设计模式的软件架构来统计文本中单词出现频率的应用。MVC模式是软件工程中一种常用的设计模式,用于将应用程序的业务逻辑、用户...

    java字数统计程序

    总的来说,"java字数统计程序"这个项目涵盖了Java编程的基础知识,包括输入输出、字符串处理、异常处理、面向对象编程、正则表达式、用户界面设计以及文件操作等多个方面,是学习和巩固Java技术的一个好实践。...

    fileTimeInfo_java_统计文件创建时间和修改时间_

    标题"fileTimeInfo_java_统计文件创建时间和修改时间_"指的是一个Java程序,它用于获取指定目录下所有文件的创建时间(Creation Time)和最后修改时间(Last Modified Time)。下面将详细阐述如何在Java中实现这一...

    java统计源码行数

    .filter(path -&gt; path.toString().endsWith(".java")) // 只处理.java文件 .forEach(path -&gt; countLinesInFile(path.toString())); } catch (IOException e) { System.err.println("Error processing directory:...

    一个java文件扫描程序

    1. Java 语言:Java 文件扫描程序使用 Java 语言编写,利用 Java 的面向对象编程特性和丰富的类库来实现文件扫描和统计功能。 2. 文件输入/输出:Java 文件扫描程序使用 Java 的文件输入/输出 API 来读取文件和写入...

Global site tag (gtag.js) - Google Analytics