package book.basic;import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;public class ListResource{

static class MyFilenameFilter implements FilenameFilter{
private String suffix="";

public MyFilenameFilter(String suffix){
this.suffix = suffix;
} @Override
public boolean accept(File dir, String name) {
if((new File(dir , name).isFile())){
return name.endsWith(suffix);
}else{
return true;
}
}
}

public static void listResByFilenameFilter(FilenameFilter filter, String dirName) throws IOException{
FileWriter file = new FileWriter("d:/a.txt");
if(!dirName.endsWith(File.separator)){
dirName = dirName + File.separator;
}
File dirFile = new File(dirName);
if(!dirFile.exists()||(!dirFile.isDirectory())){
return;
}
File[] files = dirFile.listFiles(filter);
for(int i=0; i<files.length; i++){
if(files[i].isFile()){
File text = files[i].getAbsoluteFile();
if(!(text==null)){
file.write(text.toString());
}else{
file.close();
}

System.out.println(files[i].getName());
}else if(files[i].isDirectory()){
ListResource.listResByFilenameFilter(filter, files[i].getAbsolutePath());
}
}

}

public static void main(String args[]) throws IOException{
String dir = "D:\\work";

FilenameFilter myFilenameFilter = new ListFileUtil.MyFilenameFilter(".js");
ListResource.listResByFilenameFilter(myFilenameFilter, dir);

}}
我的问题是,我想在从d:\work目录下查找出.js的文件,写在d:\a.txt文件中。请高手帮我看一下,我的程序哪里错了,应该怎么该呢

解决方案 »

  1.   

    刚刚试了下上面的代码,没有异常.你是不是要输出到a.txt里面,而上面的代码没有输出呢? 如果是
    if (files[i].isFile()) {
        String text = files[i].getAbsolutePath();
        if (!(text == null)) {
            file.write(text);
        } else {
            file.close();
        }
        System.out.println(text);
    }
    这样就可以了.
      

  2.   

    代码没有异常,只是本来我想把text输出到一个a.txt的文件里面去,运行后a.txt是空文件
    2楼的代码我试了下,也不对,a.txt还是为空
      

  3.   

    感觉你的错误可能在这里
    在运行listResByFilenameFilter(FilenameFilter filter, String dirName) throws IOException 方法调用递归时每次都FileWriter file = new FileWriter("d:/a.txt");
    所以最后a.txt文件中是空