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代码统计工具.exe`是可执行程序,用户可以直接运行来执行统计;`...
读取txt文件,统计“java”字符串出现的次数
3. **按某目录及其子目录内.java文件统计**: 用户可以选择指定的目录,工具会递归地扫描该目录及其所有子目录内的.java文件进行统计。这种功能对于大型项目尤其有用,因为它可以快速处理整个源代码树,而无需手动...
编写一个Java应用程序,实现对某个目录中的所有Java源程序文件(包含该目录的子目录中的源程序文件)进行统计。统计内容包括: (1) 目录中每个源程序文件的总行数和空白行数,文件的字节数; (2) 目录中所有源程序...
在Java编程语言中,统计指定文件中的字符个数是一项常见的任务,这主要涉及到文件I/O操作和字符流处理。下面将详细讲解如何实现这个功能,以及相关的重要知识点。 首先,要进行文件I/O操作,Java提供了`java.io`包...
综上所述,Java大文件IP统计涉及的主要知识点有:Java文件I/O,流式处理,IP地址的处理与比较,数据结构(如HashMap和TreeMap)的选择,以及可能的并发和分布式计算。通过这些技术,我们可以高效地处理大文件中的IP...
用JAVA语言统计文本文件中字母出现的频率用JAVA语言统计文本文件中字母出现的频率
在Java编程语言中,统计一个文件的行数是一项常见的任务,尤其在数据分析、日志处理或者性能测试等场景。这个任务可以通过读取文件并逐行处理来实现。下面我们将详细探讨如何利用Java来统计单个文件的行数,并结合...
可以统计指定目录下指定文件类型的文件数量及行数 此文件是用jdk1.5编译的.如果说您的jvm不相符.请联系qq:361606472
10、支持Java文件 .java 的统计。 11、支持SQL文件 .sql 的统计。 12、支持 *.* 文件类型的自动分析统计。 13、支持自定义一次选择多个目录的统计方式。 14、支持用户自定义文件统计类型及统计方法。 15、支持htm,...
Java词频统计程序MVC是一种基于Java编程语言实现的、采用Model-View-Controller(MVC)设计模式的软件架构来统计文本中单词出现频率的应用。MVC模式是软件工程中一种常用的设计模式,用于将应用程序的业务逻辑、用户...
总的来说,"java字数统计程序"这个项目涵盖了Java编程的基础知识,包括输入输出、字符串处理、异常处理、面向对象编程、正则表达式、用户界面设计以及文件操作等多个方面,是学习和巩固Java技术的一个好实践。...
标题"fileTimeInfo_java_统计文件创建时间和修改时间_"指的是一个Java程序,它用于获取指定目录下所有文件的创建时间(Creation Time)和最后修改时间(Last Modified Time)。下面将详细阐述如何在Java中实现这一...
.filter(path -> path.toString().endsWith(".java")) // 只处理.java文件 .forEach(path -> countLinesInFile(path.toString())); } catch (IOException e) { System.err.println("Error processing directory:...
1. Java 语言:Java 文件扫描程序使用 Java 语言编写,利用 Java 的面向对象编程特性和丰富的类库来实现文件扫描和统计功能。 2. 文件输入/输出:Java 文件扫描程序使用 Java 的文件输入/输出 API 来读取文件和写入...