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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 方志亮 中级黑马   /  2012-8-27 21:26  /  1388 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 方志亮 于 2012-8-27 21:27 编辑

package cn.test;

import java.io.File;
import java.io.FilenameFilter;

/*
* 指定一个目录,打印这个目录下所有文件和文件夹的名称
* d:\\test
*/
public class FileDemo {

        public static void main(String[] args) {
                File file = new File("d:\\343242155");
                listAllName(file);
        }

        public static void listAllName(File dir) {
                // 由于我们获取到的数据还有进行判断,所有必需返回的是文件对象
//                System.out.println(dir.getPath());
                File[] fileArray = dir.listFiles(new FilenameFilter() {
                        @Override
                        public boolean accept(File dir, String name) {
                                // TODO Auto-generated method stub
                                return name.endsWith(".jpg");
                        }
                });//用这个为什么不行??????
                //File[] fileArray = dir.listFiles();//为什么用这个可以               
                    for (File file : fileArray) {
                        // 判断每个file是目录还是文件,如果是目录,继续。如果是文件,则打印名称。
                        if (file.isDirectory()) {
                                listAllName(file);
                        } else {
                                if(file.getName().endsWith(".jpg"))
                                System.out.println(file.getAbsolutePath());
                        }
                }
        }

}

4 个回复

倒序浏览
/*
* 指定一个目录,打印这个目录下所有文件和文件夹的名称
* d:\\test
*/
public class FileDemo {

        public static void main(String[] args) {
                File file = new File("d:\\343242155");
                listAllName(file);
        }

        public static void listAllName(File dir) {
                // 由于我们获取到的数据还有进行判断,所有必需返回的是文件对象
//                System.out.println(dir.getPath());
                File[] fileArray = dir.listFiles(new FilenameFilter() {
                        @Override
                        public boolean accept(File dir, String name) {
                                // TODO Auto-generated method stub
                                return name.endsWith(".jpg");
                        }
                });//用这个为什么不行??????
                //File[] fileArray = dir.listFiles();//为什么用这个可以  答:因为上面那个方法确少判断      
                    for (File file : fileArray) {
                        // 判断每个file是目录还是文件,如果是目录,继续。如果是文件,则打印名称。
                        if (file.isDirectory()) {
                                listAllName(file);
                        } else {
                                if(file.getName().endsWith(".jpg"))
                                System.out.println(file.getAbsolutePath());
                        }
                }
        }

}
回复 使用道具 举报
  File[] fileArray = dir.listFiles(new FilenameFilter() {
                        @Override
                        public boolean accept(File dir, String name) {
                                // TODO Auto-generated method stub
                                return name.endsWith(".jpg");
                        }
因为方法确少判断   
回复 使用道具 举报
追梦黑马 发表于 2012-8-27 21:52
File[] fileArray = dir.listFiles(new FilenameFilter() {
                        @Override
         ...

那么应该怎么判断    代码体现以下 谢谢
回复 使用道具 举报
                File[] fileArray = dir.listFiles(new FilenameFilter() {
                         @Override
                         public boolean accept(File dir, String name) {
                                 // TODO Auto-generated method stub
                                 return name.endsWith(".jpg");//如果,改为return  true的话和下面的listFiles效果一样。
                         }
                 });//用这个为什么不行??????
这一段你限定了只返回后缀名为.jpg的文件的路径。目录肯定是不符合的,文件也只返回在d:\根目录下的jpg文件的路径。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马