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的。

解决方案 »

  1.   

    import java.io.*;
    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);
    }
    }
      

  2.   

    搞错:
    把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();
      

  3.   

    http://expert.csdn.net/Expert/topic/1244/1244583.xml?temp=.1376764
    :)递归遍历