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文件中。请高手帮我看一下,我的程序哪里错了,应该怎么该呢
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文件中。请高手帮我看一下,我的程序哪里错了,应该怎么该呢
if (files[i].isFile()) {
String text = files[i].getAbsolutePath();
if (!(text == null)) {
file.write(text);
} else {
file.close();
}
System.out.println(text);
}
这样就可以了.
2楼的代码我试了下,也不对,a.txt还是为空
在运行listResByFilenameFilter(FilenameFilter filter, String dirName) throws IOException 方法调用递归时每次都FileWriter file = new FileWriter("d:/a.txt");
所以最后a.txt文件中是空