import java.io.File;
public class Recursion_Search {
public void search(String fpath) {
File f = new File(fpath);
File[] farray = f.listFiles();//all
if (fpath == null) {
System.out.println("没有输入路径");
} else {
for (int i = 0; farray!=null&&i < farray.length; i++) {
File f1=farray[i];
if (f1.isFile()&&(f1.getName()).contains("i")) {
System.out.println(f1.getName() + " :::" + f1.getPath());
} else {
if(f1.getName().contains("i"))
System.out.println(f1.getName() + " :" + f1.getPath());
fpath = f1.getPath();
search(fpath);
}
}
}
}
public static void main(String args[]) {
Recursion_Search rs = new Recursion_Search();
rs.search("e:/");
}
}
为什么要写那么复杂呢???
有简单一些的方法递归而不用。。。
。。。。。
呵呵。。。。
import java.io.*;
import java.util.*;
class Test{
public static void main(String args[]) {
Test t=new Test();
List
for(int i=0;i
}
public List
List
File file=new File(root);
File[] fileList=file.listFiles();
for(int i=0;i
if(fileList[i].isDirectory()) list.addAll(findFileByName(root+"\\"+fileList[i].getName(),onStr));
}
return list;
}
}
import java.io.File;
import java.io.FileFilter;
class Filter implements FileFilter {
private String ext;
public Filter(String ext) {
this.ext = ext;
}
public boolean accept(File pathname) {
if(pathname == null) {
return false;
}
if(pathname.isDirectory()) {
return true;
}
if(pathname.getName().contains(ext)) {
return true;
}
return false;
}
public String toString() {
return ext;
}
}
public class ListFile {
public void search(String path) {
File file = new File(path);
if(!file.isDirectory()) {
return ;
}
FileFilter filter = new Filter("i");
File[] files = file.listFiles(filter);//表示此抽象路径名所表示目录中的文件和目录的抽象路径名数组。如果目录为空,则数组也将为空。如果抽象路径名不表示一个目录,或者发生 I/O 错误,则返回 null。
if(files == null) {
return;
}
for(File temp : files) {
if(temp.isDirectory()) {
if(temp.getName().contains(filter.toString())) {
System.out.println(temp.getName());
}
search(temp.getAbsolutePath());
}
}
}
public static void main(String[] args) {
new ListFile().search("f:/");
}
}
仔细看看你就知道错哪了.
public class MyFileFilter implements FileFilter {
private String ext = null;
MyFileFilter(String ext) {
this.ext = ext;
}
public boolean accept(File f) {
if (f.isDirectory()) {
return false;
}
return (f.getName().indexOf(ext) != -1);
}
}
public class Recursion_Search {
public void search(String rfpath) {
File f = new File(rfpath);
MyFileFilter mff = new MyFileFilter("i"); //这里会有一个空指针异常!!怎么回事?
File[] farray = f.listFiles();
if (farray == null) {
System.out.println("没有输入路径");
}
else {
for (int i = 0; i < farray.length; i++) {
if (mff.accept(farray[i])) {
System.out.println(f.getName() + " :" + f.getPath());
}
else {
rfpath = farray[i].getPath();
search(rfpath);
}
}
}
}
public static void main(String args[]) {
Recursion_Search rs = new Recursion_Search();
rs.search("f:/");
}
}