主要思路:1.创建一个类继承FilenameFilter接口,然后重写他的accept(File dir,String name)方法。其中dir为文件夹名称,name是文件后缀名。用来筛选你需要的文件
2.创建主函数Test。主要通过File []list=file.listFiles()得到文件夹下面的数组
3.在数组中文件通过.isDirectory()查看是否为文件夹,是的话再递归一次。不是则按照特定的格式筛选出相关文件
PS:下面程式中,level主要作为修饰“--”使用。
程序相关:
主函数:
package getfile;
import java.io.File;
import java.io.FilenameFilter;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
File file=new File("D:\\android\\abc");
getfile(file,0);
}
public static void getfile(File file,int level){
StringBuffer sb=new StringBuffer("--");
StringBuffer sb1=new StringBuffer("=");
for (int i = 0; i < level; i++) {
sb.append("--");
sb1.append("+");
}
//获取file目录下的所有文件和文件夹
FilenameFilter filter=new Filefilter();
String[] str=file.list(filter);
System.out.println(sb1.toString()+file.getName());
for(String li:str){
System.out.println(sb.toString()+li);
}
File []list=file.listFiles();
for(File fil:list){
if(fil.isDirectory()){
// level++;
// getfile(fil,level);不能这样子写,因为这样子,只要递归一次,level就会+1;
//成递加形势,而不是每下一个阶级才会加一
getfile(fil,level+1);
}else{
//System.out.println(fil.getName());
}
}
}
}
=========================================================================================
FilenameFilter筛选程式:
package getfile;
import java.io.File;
import java.io.FilenameFilter;
public class Filefilter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
if(name.endsWith(".txt")){
return true;
}
return false;
}
}