因为工作需要,经常需要使用图片,而且放在不同的文件夹下,所有图片都放在一个大的文件夹下。
我想写一个程序,递归遍历所有目录以及子目录,并统计各种图片格式的数量有多少。
请各位大神提供一点思路。。

解决方案 »

  1.   

    jdk7 nio2 Files walkFileTree 方法
      

  2.   

    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;public class Test {
        //存放文件路径,若需要,可以得到是哪里的图片
    private static List<String> filelist = new ArrayList<String>();
    static int png=0;
    static int gif=0;
    static int jpg=0; public static void main(String[] args) {
    getFileList("E:\\tu");
    System.out.println(jpg);
    System.out.println(gif);
    System.out.println(png);
    } public static void getFileList(String strPath) {
    File dir = new File(strPath);
    File[] files = dir.listFiles();
    if (files == null)
    return;
    for (int i = 0; i < files.length; i++) {
    if (files[i].isDirectory()) {
    getFileList(files[i].getAbsolutePath());
    } else {
    getFileList(files[i].getAbsolutePath());
    String fileName = files[i].getName();
    String suffix=fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase();
    if("jpg".equals(suffix)){
    jpg++;
    }else if("png".equals(suffix)){
    png++;
    }else if("gif".equals(suffix)){
    gif++;
    }
    }
    }

    }
    }
      

  3.   


    public void showAllFiles(File dir) throws Exception{
    File[] fs = dir.listFiles();
    CompressPicDemo mypic = new CompressPicDemo();  

    for(int i=0; i<fs.length; i++){
    System.out.println(fs[i].getAbsolutePath());

    if(fs[i].isDirectory()){
    try{
    showAllFiles(fs[i]);
    }catch(Exception e){
    e.printStackTrace();
    }
    }else{


    if(fs[i].getAbsolutePath().contains(".jpg")){
    jpgnum++;
    }else if(fs[i].getAbsolutePath().contains(".gif")){
    gifnum++;
    }
    }
    }
    }
      

  4.   

    public void loopDir(File file){
    File[] files = file.listFiles();
    for(File f : files){
    if(f.isDirectory()){
    loopDir(f);
    }else if(f.isFile()){
    //分别累加不同格式图片个数
    }
    }
    }
      

  5.   

    楼上都不错啊,都有代码了,我就来个没代码的吧,说下我的思想楼主需要的是各种格式的图片统计,所以我觉得用if写死格式去判断不太好应该是拿到文件名称,取出后缀,然后存成map格式,map的key就是后缀,map的值就是数量,这样不但能够统计所有的格式图片,程序也将变得非常简洁,设置图片个数也方便,每次加1就可以了
      

  6.   

    这个有点不靠谱,文件名是.jpg.gif的怎么办?
      

  7.   


    以"."分割,取最后一段进行判断。
    理论上我的程序肯定有问题,但是实际应用应该不会出现这样的问题,因为实际应用中很少会有图片会有.jpg.gif这样的名字,对么?
      

  8.   

    你怎么知道不能用.jpg.gif命名,131316545465.jpg.gif,这样的命名谁敢说不合法。
      

  9.   

    把这个图片载下来看看什么命名。http://imgsrc.baidu.com/forum/w%3D580/sign=ae934ff04b36acaf59e096f44cd88d03/5d6034a85edf8db1ae6f70ad0923dd54574e74b1.jpg