我想实现统计文件各目录个数,并将文件按后缀名进行分组排序!!! 可下面的代码不给力 ,不知道为什么实现不了?麻烦大家帮我看一下!!!import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.SortedSet;
public class GetFileCatalog {
public static long documentNum = 0;
public static long directoryNum = 0;


public static void main(String[] args) {
File file = new File("D:\\跆拳道");

print(file);
String[] document = file.list();
Arrays.sort(document, new Comparator() {
   public int compare(Object arg0, Object arg1) {     String str1 = (String) arg0;
    String str2 = (String) arg1;     if ((str1.indexOf(".")+1) > (str2.indexOf(".")+1)) {
     return 1;
    }     return 0;
   }   });
for (int i = 0; i < document.length; i++)
   System.out.println(document[i]);
System.out.println("文件的个数:"+documentNum);
System.out.println("目录的个数:"+directoryNum);
}
private static void print(File file) {
if(file.isDirectory()) {
System.out.println("Directory name:"+file.getName()+",last modified time is :"+file.lastModified());
directoryNum++;
File[] files = file.listFiles();
for(int i = 0;i < files.length;i++) {
print(files[i]);
}
}else {

System.out.println("File name:"+file.getName()+",last modified time is :"+file.lastModified());
documentNum++;
}
}
}
 


解决方案 »

  1.   

    Directory name:test,last modified time is :1293066834962
    File name:新建 BMP 图像.bmp,last modified time is :1293066834962
    File name:新建 Microsoft Visio 绘图.vsd,last modified time is :1293066830224
    File name:新建 文本文档 (2).txt,last modified time is :1293066826029
    File name:新建 文本文档.txt,last modified time is :1293066822642
    新建 文本文档.txt
    文件的个数:4
    目录的个数:1
    新建 BMP 图像.bmp
    文件的个数:4
    目录的个数:1
    新建 文本文档 (2).txt
    文件的个数:4
    目录的个数:1
    新建 Microsoft Visio 绘图.vsd
    文件的个数:4
    目录的个数:1
      

  2.   


    import java.io.File;
    import java.util.ArrayList;
    import java.util.Comparator;
    import java.util.List;
    import java.util.Collections;
    public class GetFileCatalog {
    public static long documentNum = 0;
    public static long directoryNum = 0;
    //保存文件名,每个目录下按后缀排序
    public static List<String> result = new ArrayList<String>();
    public static void main(String[] args) {
    File file = new File("D:\\跆拳道"); statistics(file);
    System.out.println("文件的个数:" + documentNum);
    System.out.println("目录的个数:" + directoryNum);

    Collections.sort(result, new Comparator<String>(){
    public int compare(String o1, String o2) {
    String str1 = o1.substring(o1.lastIndexOf("."));
    String str2 = o2.substring(o2.lastIndexOf("."));
    return str1.compareToIgnoreCase(str2);
    }
    });

    //打印文件名
    for(String s : result) {
    System.out.println(s);
    }
    } /**
     * 统计文件,并存入result
     * @param file
     */
    private static void statistics(File file) {
    if (file.isDirectory()) {
    directoryNum++;
    File[] files = file.listFiles();
    for (int i = 0; i < files.length; i++) {
    statistics(files[i]);
    }
    } else {
    result.add(file.getName());
    documentNum++;
    }
    }
    }
      

  3.   

    LZ你的Comparator实现的不对,你比较的是文件扣除扩展名后的长度。
      

  4.   

    又遇到问题咯 要怎么把result列表里面的文件按后缀名进行分组? Iterator i = result.iterator();
            while(i.hasNext()) {
            
             String str = (String)i.next();
             str = str.substring(str.lastIndexOf("."));
             if(str.equalsIgnoreCase("doc")) {
             doc.add(str);
             System.out.println("OK");
             }
            }
            for(String s:doc) {
             System.out.println(s);
            }if(str.equalsIgnoreCase("doc")) 这句没有执行 是什么原因呀?