public class LineCounter {
static List fileExts=new ArrayList();
static boolean verbose=false;
public static void main(String [] args) throws Exception {
if(args.length<2) {
System.out.println("usage: com.founder.identity.util.LineCounter <dir> <fileExtsSeperatedByComma> [-verbose]");
return;
}
String path=args[0];
String exts=args[1];
if(args.length>2) {
String v=args[2];
if(v!=null) {
verbose=true;
}
}
StringTokenizer stok=new StringTokenizer(exts, ",");
while(stok.hasMoreTokens()) {
String ext=stok.nextToken();
fileExts.add(ext);
}
System.out.println("path="+path+" exts=/""+exts+"/" lines=" +countFileLines(path));
}
public static long countFileLines(String path) throws Exception {
long lines=0;
List childFiles=getChildFiles(path);
for(Iterator iter=childFiles.iterator(); iter.hasNext(); ) {
String childFile=(String) iter.next();
lines+=countFile(childFile);
}
List childDirs=getChildDirs(path);
for(Iterator iter=childDirs.iterator(); iter.hasNext(); ) {
String childDir=(String) iter.next();
lines+=countFileLines(childDir);
}
return lines;
}
public static long countFile(String path) throws Exception {
for(Iterator iter=fileExts.iterator(); iter.hasNext();) {
String ext=(String) iter.next();
if(path.endsWith(ext)) {
BufferedReader fileReader=new BufferedReader(new FileReader(path));
long count=0;
while(true) {
String line=fileReader.readLine();
if(line==null) break;
count++;
}
fileReader.close();
if(verbose) System.out.println("file="+path+" lines="+count);
return count;
}
}
return 0;
}
public static List getChildDirs(String path) throws Exception {
List dirs=new ArrayList();
File [] filelist=new File(path).listFiles();
if(filelist==null) return dirs;
for(int i=0; i<filelist.length; i++) {
if(filelist[i].isDirectory()) {
String childPath=filelist[i].getPath();
dirs.add(childPath);
}
}
return dirs;
}
public static List getChildFiles(String path) throws Exception {
List files=new ArrayList();
File [] filelist=new File(path).listFiles();
if(filelist==null) return files;
for(int i=0; i<filelist.length; i++) {
if(filelist[i].isFile()) {
String childPath=filelist[i].getPath();
files.add(childPath);
}
}
return files;
}
}
static List fileExts=new ArrayList();
static boolean verbose=false;
public static void main(String [] args) throws Exception {
if(args.length<2) {
System.out.println("usage: com.founder.identity.util.LineCounter <dir> <fileExtsSeperatedByComma> [-verbose]");
return;
}
String path=args[0];
String exts=args[1];
if(args.length>2) {
String v=args[2];
if(v!=null) {
verbose=true;
}
}
StringTokenizer stok=new StringTokenizer(exts, ",");
while(stok.hasMoreTokens()) {
String ext=stok.nextToken();
fileExts.add(ext);
}
System.out.println("path="+path+" exts=/""+exts+"/" lines=" +countFileLines(path));
}
public static long countFileLines(String path) throws Exception {
long lines=0;
List childFiles=getChildFiles(path);
for(Iterator iter=childFiles.iterator(); iter.hasNext(); ) {
String childFile=(String) iter.next();
lines+=countFile(childFile);
}
List childDirs=getChildDirs(path);
for(Iterator iter=childDirs.iterator(); iter.hasNext(); ) {
String childDir=(String) iter.next();
lines+=countFileLines(childDir);
}
return lines;
}
public static long countFile(String path) throws Exception {
for(Iterator iter=fileExts.iterator(); iter.hasNext();) {
String ext=(String) iter.next();
if(path.endsWith(ext)) {
BufferedReader fileReader=new BufferedReader(new FileReader(path));
long count=0;
while(true) {
String line=fileReader.readLine();
if(line==null) break;
count++;
}
fileReader.close();
if(verbose) System.out.println("file="+path+" lines="+count);
return count;
}
}
return 0;
}
public static List getChildDirs(String path) throws Exception {
List dirs=new ArrayList();
File [] filelist=new File(path).listFiles();
if(filelist==null) return dirs;
for(int i=0; i<filelist.length; i++) {
if(filelist[i].isDirectory()) {
String childPath=filelist[i].getPath();
dirs.add(childPath);
}
}
return dirs;
}
public static List getChildFiles(String path) throws Exception {
List files=new ArrayList();
File [] filelist=new File(path).listFiles();
if(filelist==null) return files;
for(int i=0; i<filelist.length; i++) {
if(filelist[i].isFile()) {
String childPath=filelist[i].getPath();
files.add(childPath);
}
}
return files;
}
}