A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 心灵的微幸福 中级黑马   /  2014-6-6 18:48  /  1149 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 心灵的微幸福 于 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对象中的路径下有多个文件夹,那么通过过滤器不会输出,这个怎么解释

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

2 个回复

倒序浏览
  File[] fileName=file.listFiles(new FilenameFilter(){
                        public boolean accept(File dir,String name){
                                return name.endsWith(".java");
                        }
                });
这句话使得这段代码把所有的带.java的文件列出来了,而继续运行下面的代码只有带.java结束的文件夹才能继续递归,而楼主的这个文件夹中肯定没有这个符合条件的文件夹。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
crazystraw 发表于 2014-6-6 21:27
File[] fileName=file.listFiles(new FilenameFilter(){
                        public boolean accept ...

好的,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马