黑马程序员技术交流社区

标题: 怎么把文件夹下的所有txt文件名打印出来,包括子文件夹 [打印本页]

作者: 晓月残魂    时间: 2015-9-6 21:49
标题: 怎么把文件夹下的所有txt文件名打印出来,包括子文件夹
public class Main
{
        public static void showDir(File file, FilenameFilter filter)
        {
                File[] files = file.listFiles(filter);
                System.out.println(file.getAbsolutePath());
                for(File f : files)
                {
                        if(f.isDirectory())
                                showDir(f,filter);
                        else
                                System.out.println(f.getAbsolutePath());
                }
        }
        public static void main(String[] args)
        {
                File f = new File("D:\\Dev-Cpp");
                showDir(f, new FilenameFilter()
                {//内部类
                        public boolean accept(File dir, String name)
                        {
                                File f = new File(name);
                                if(f.isDirectory())
                                {
                                        return true;
                                }
                                else
                                        return f.getName().endsWith(".txt");
                        }
                });
        }
}

内部类该怎么写?(加粗部分代码不对)
或者更好的方法?


作者: 生存追求    时间: 2015-9-6 22:08
试试下面这段代码

package fourth;
import java.io.File;

/**
* 我想打印指定目录下的文件或文件夹,包括子目录中的内容,也就是列出指定目录下的所有内容
*/
public class ListFilesDemo {
    public static void main(String []args){
        File dir=new File("E:\\testdir");
        showDir(dir);
    }
    public static void showDir(File dir){
        File[] files=dir.listFiles();
        for(int i=0;i<files.length;i++){
            //判断一下当前是目录还是文件
            if(files[i].isDirectory())
                //如果是目录则递归调用,即自己调用自己
                showDir(files[i]);
            else{
                    if((files[i]+"").endsWith(".txt"))
                //这个for循环只负责打印文件的
                System.out.println(files[i]);
            }
        }
    }
}
作者: 晓月残魂    时间: 2015-9-6 22:27
生存追求 发表于 2015-9-6 22:08
试试下面这段代码

package fourth;

这个我刚刚试了,思路是获取全面文件,然后判断文件名是否符合要求
但是我有一条语句是打印目录的,这样就会把那些目录(里面有文件但是没有txt文件)也打印出来了

作者: 生存追求    时间: 2015-9-6 22:31
晓月残魂 发表于 2015-9-6 22:27
这个我刚刚试了,思路是获取全面文件,然后判断文件名是否符合要求
但是我有一条语句是打印目录的,这样 ...

??不明白
作者: 晓月残魂    时间: 2015-9-6 22:36
就是 能不能直接获取目录下的   子目录和txt文件
作者: 晓月残魂    时间: 2015-9-6 22:37
生存追求 发表于 2015-9-6 22:31
??不明白

就是 能不能直接获取目录下的   子目录和txt文件




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