import java.io.*;
import java.util.*;
import java.text.*;public class Find { static JavaFileFilter javaFilter = new JavaFileFilter(); /**
* recursive list files
*
*/
public static void listFiles(File currentRoot, ArrayList files) {
if (currentRoot.isFile()) {
files.add(currentRoot);
} else {
File[] currentDirFiles = currentRoot.listFiles(javaFilter); for (int i = 0; i < currentDirFiles.length; i++) {
if (currentDirFiles[i].isDirectory()) {
if (!currentDirFiles[i].getName().equals("CVS")
&& !currentDirFiles[i].getName().equals("CVSBase")) {
listFiles(currentDirFiles[i], files);
}
} else {
files.add(currentDirFiles[i]);
}
}
}
} /**
*
*
*/
public static void processFile(File file, String toFind) throws IOException {
LineNumberReader lnr = new LineNumberReader(new FileReader(file)); StringBuffer newFileBuffer = new StringBuffer();
String line = null;
while ((line = lnr.readLine()) != null) {
processLine(lnr.getLineNumber(), file.getPath(), line, toFind);
}
lnr.close();
} /**
*
* @return new replaced line
*/
public static void processLine(int lineNumber, String filePath, String line, String toFind) {
if (line == null || line.equals("")) {
return;
} int findPos = line.indexOf(toFind);
if (findPos > 0) {
debug(filePath + "\t" + lineNumber + "\t" + line);
}
} /**
*
*/
public static void debug(String message) {
System.out.println(message);
} /**
*
*/
public static void error(String message) {
System.out.println(message);
}
/**
*
*/
public static void main(String args[]) throws Exception {
ArrayList files = new ArrayList();
listFiles(new File(args[0]), files); for (int i = 0; i < files.size(); i++) {
File file = (File) files.get(i);
processFile(file, args[1]);
}
}
}
/**
*
*
*
*/
class JavaFileFilter implements FileFilter { /**
*
*/
public boolean accept(File pathName) {
if (pathName.isDirectory()) {
if (pathName.getName().equals("CVS")
|| pathName.getName().equals("CVSBase")) {
return false;
} else {
return true;
}
} else {
if (pathName.getName().endsWith(".java")) {
return true;
}
} return false;
}
}我以前写的一个找指定目录下面的java文件里面的特定String的。
import java.util.*;
import java.text.*;public class Find { static JavaFileFilter javaFilter = new JavaFileFilter(); /**
* recursive list files
*
*/
public static void listFiles(File currentRoot, ArrayList files) {
if (currentRoot.isFile()) {
files.add(currentRoot);
} else {
File[] currentDirFiles = currentRoot.listFiles(javaFilter); for (int i = 0; i < currentDirFiles.length; i++) {
if (currentDirFiles[i].isDirectory()) {
if (!currentDirFiles[i].getName().equals("CVS")
&& !currentDirFiles[i].getName().equals("CVSBase")) {
listFiles(currentDirFiles[i], files);
}
} else {
files.add(currentDirFiles[i]);
}
}
}
} /**
*
*
*/
public static void processFile(File file, String toFind) throws IOException {
LineNumberReader lnr = new LineNumberReader(new FileReader(file)); StringBuffer newFileBuffer = new StringBuffer();
String line = null;
while ((line = lnr.readLine()) != null) {
processLine(lnr.getLineNumber(), file.getPath(), line, toFind);
}
lnr.close();
} /**
*
* @return new replaced line
*/
public static void processLine(int lineNumber, String filePath, String line, String toFind) {
if (line == null || line.equals("")) {
return;
} int findPos = line.indexOf(toFind);
if (findPos > 0) {
debug(filePath + "\t" + lineNumber + "\t" + line);
}
} /**
*
*/
public static void debug(String message) {
System.out.println(message);
} /**
*
*/
public static void error(String message) {
System.out.println(message);
}
/**
*
*/
public static void main(String args[]) throws Exception {
ArrayList files = new ArrayList();
listFiles(new File(args[0]), files); for (int i = 0; i < files.size(); i++) {
File file = (File) files.get(i);
processFile(file, args[1]);
}
}
}
/**
*
*
*
*/
class JavaFileFilter implements FileFilter { /**
*
*/
public boolean accept(File pathName) {
if (pathName.isDirectory()) {
if (pathName.getName().equals("CVS")
|| pathName.getName().equals("CVSBase")) {
return false;
} else {
return true;
}
} else {
if (pathName.getName().endsWith(".java")) {
return true;
}
} return false;
}
}我以前写的一个找指定目录下面的java文件里面的特定String的。
import java.util.Date;public class Jdir{
private static int k=20;
private String space(int i){
String strspace="";
int l=k-i;
for(int j=0;j<l;j++){
strspace+=" ";
}
return strspace;
}
private void filelist(File fileshow){
File myfile=fileshow;
int len=0;
File[] filename=myfile.listFiles();
System.out.println("\n目录:"+myfile.getPath());
for(int i=0;i<filename.length;i++){
if(filename[i].isFile()){
System.out.print(new Date(filename[i].lastModified()));
System.out.print(space(7)+filename[i].length());
System.out.println(space(7)+filename[i].getName());
}
}
for(int i=0;i<filename.length;i++){
if(filename[i].isDirectory()){
filelist(filename[i]);
}
}
}
public static void main(String []args){
File mydir=new File("d:/myjava");
verctor fl=new verctor();
fl.filelist(mydir);
}
}
把public static void main(String []args){
File mydir=new File("d:/myjava");
verctor fl=new verctor();
fl.filelist(mydir);
}
里的verctor fl=new verctor();改成
Jdir fl=new Jdir();
:)递归遍历