高难度java io 实现D盘下有几个avi文件

个人感觉这个题有挺难的
今天我想计算一下D盘下各个目录下有几个avi的文件然后计划一下花多少天去看完
发现D盘中很多文件夹下都有avi文件 一个一个文件夹进去看太花时间了
这不就想到这个问题,希望大家帮我实现一下

求D盘下有几个avi的文件
我暂时实现的是 test文件夹下有11个avi文件 test2文件夹有12个avi文件
实际我希望输出的是D盘下有 23个avi文件

NullPointerException 你的代码是不是有问题,代码怎么写的

把所有avi加起来不就完了吗

[code="java"]
public class GetDiskAviFiles {

private static int fileNumber = 0;
public static void main(String[] args) {
    System.out.println("begin time at " + new Date());
    File file = new File("d:\\"); 
    findAllAviFiles(file);
    System.out.println("end time at " + new Date());
    System.out.println("avi 文件总数为: " + fileNumber);

}

public static void findAllAviFiles(File file) {
    if (file.isDirectory()) {
        File[] subFile = file.listFiles();
        for (int i = 0; i < subFile.length; i++) {
            findAllAviFiles(subFile[i]);
        }
    } else {
        //file为文件,查找所有avi文件
        if(file.getName().endsWith(".avi")||file.getName().endsWith(".AVI")){
            fileNumber++;
            System.out.println(fileNumber+"、 "+file.getAbsolutePath());
        }
    }
}

}
[/code]
这样可以的,d盘文件比较多的话,会费时间...

不知道在文件夹里面建立一个快捷方式会不会无线递归。。。

uncontrolsheep 说的应该不会吧,刚测试了下,快捷方式也是一种lnk结尾的文件,结果:
begin time at Thu May 26 10:40:00 CST 2011
0、 d:\test\快捷方式 到 test1.lnk
0、 d:\test\快捷方式 到 test2.lnk
0、 d:\test\新建文件夹\test1\1.avi
0、 d:\test\新建文件夹\test2\2.avi
end time at Thu May 26 10:40:00 CST 2011

[code="java"]
import java.io.File;
import java.util.Date;

public class GetDiskAviFiles {

private static int fileNumber = 0;

private static int allFileCount = 0;

public static void main(String[] args) {
    System.out.println("begin time at " + new Date());
    File file = new File("d:\\");
    findAllAviFiles(file);
    System.out.println("end time at " + new Date());
    System.out.println("avi 文件总数为: " + fileNumber);
    System.out.println("D盘下 文件总数为: " + allFileCount);
}

public static void findAllAviFiles(File file) {
    if (file.isDirectory()) {
        File[] subFile = file.listFiles();

//空指针问题出现在这里,即如果某个文件夹下是空的,subFile为 null 了
if (null != subFile) {
for (int i = 0; i < subFile.length; i++) {
findAllAviFiles(subFile[i]);
}
}
} else {
// file为文件,查找所有avi文件
if (file.getName().endsWith(".avi")
|| file.getName().endsWith(".AVI")) {
fileNumber++;
System.out.println(fileNumber + "、 " + file.getAbsolutePath());
}
allFileCount++;
}
}
}

[/code] 谢谢大家纠正 :)