黑马程序员技术交流社区

标题: File对象中关于过滤器的问题. [打印本页]

作者: 心灵的微幸福    时间: 2014-6-6 18:48
标题: File对象中关于过滤器的问题.
本帖最后由 心灵的微幸福 于 2014-6-7 12:11 编辑

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
/*

代码思路1.对指定路径进行递归
           2.获取递归过程中所有.JAVA文件的路径
              3.将这些路径存储到集合中
       4 .将集合中的数据写入到一个文件中
*/
public class IOText {

        public static void main(String[] args) throws IOException {
               
                File file = new File("D:"+File.separator+"java文档"+File.separator+"毕向东java代码");
                //file 指定的路径下还有多个文件夹
                LinkedList<File>link = new LinkedList<File>();
                getFileName(file,link);
                printCollection(link);
        }
        public static void getFileName(File file,LinkedList<File>link){
                File[] fileName=file.listFiles(new FilenameFilter(){
                        public boolean accept(File dir,String name){
                                return name.endsWith(".java");
                        }
                });
               
                for(File i:fileName){
                        if(i.isDirectory()){
                                getFileName(i,link);
                        }else{
                                link.add(i);
                        }
            }
        }
        public static void printCollection(LinkedList<File>link) throws IOException{
                BufferedWriter buf= new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\1.txt")));
                for(File i:link){
                        String name=i.getAbsolutePath();
                        buf.write(name);
                        buf.newLine();
                        buf.flush();
                }
                buf.close();
        }
}
这段代码中如果File对象中的路径下有多个文件夹,那么通过过滤器不会输出,这个怎么解释
作者: crazystraw    时间: 2014-6-6 21:27
  File[] fileName=file.listFiles(new FilenameFilter(){
                        public boolean accept(File dir,String name){
                                return name.endsWith(".java");
                        }
                });
这句话使得这段代码把所有的带.java的文件列出来了,而继续运行下面的代码只有带.java结束的文件夹才能继续递归,而楼主的这个文件夹中肯定没有这个符合条件的文件夹。
作者: 心灵的微幸福    时间: 2014-6-7 12:10
crazystraw 发表于 2014-6-6 21:27
File[] fileName=file.listFiles(new FilenameFilter(){
                        public boolean accept ...

好的,谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2