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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

求D盘下有几个avi的文件
我暂时实现的是 test文件夹下有22个avi文件 test2文件夹有12个avi文件
实际我希望输出的是D盘下有 34个avi文件
[ 本帖最后由 王士铭 于 2011-07-31  19:23 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
admin + 1 提问前得自己去试试怎么做哦!

查看全部评分

5 个回复

倒序浏览

回复 楼主 的帖子

我写的例子有点简单,不过能解决问题,看看行不,有问题告我
  1. import java.io.File;


  2. public class Test_7_31  {
  3.          //这里标记符合文件的个数
  4.         private static int x = 0;

  5.         public static void main(String[] args) {
  6.                 //设置,你明白
  7.                 String extension = "jpg";
  8.                 String pathName ="E:/ww";
  9.                 //File file = new File("E:/ww/");
  10.                 search(pathName,extension);
  11.                 System.out.println(x);
  12.         }
  13.        
  14.        
  15.         private static void search(String pathName,String fileName) {       
  16.                 File file = new File(pathName);
  17.                 String str[] = file.list();
  18.                 File directoryName =null;
  19.                 for(String s:str){
  20.                         //检测directoryName是否以/为结尾(系统分隔符)
  21.                     if(pathName.endsWith(File.separator)){
  22.                             directoryName = new File(pathName+s);
  23.                     }
  24.                            
  25.                     else{
  26.                             directoryName = new File(pathName+File.separator+s);
  27.                     }
  28.                     
  29.                     //若果directoryName是一个文件并且扩展名为fileName x++
  30.                     int i = s.lastIndexOf('.');
  31.                     if(directoryName.isFile()&&s.substring(i+1).equalsIgnoreCase(fileName))
  32.                     {
  33.                             x++;
  34.                     }
  35.                     
  36.                     //检测子目录   
  37.                      if(directoryName.isDirectory()){
  38.                         search(directoryName.toString(),fileName);
  39.                     }
  40.                 }
  41.         }
  42. }
复制代码
[ 本帖最后由 李龙 于 2011-07-31  21:25 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-1 13:27:03
藤椅
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
黑马网友  发表于 2011-8-1 14:17:03
板凳
在File的list方法中可以接受一个FilenameFiter参数,通过这个参数股可以只列出符合条件的文件。
FilenameFiter接口里面有一个accept(File dir , String name)方法,这个方法可以依次对指定的File的所有子目录、子文件夹进行迭代、如果返回真true,则list方法就会列出该子目录或者子文件夹。

如下程序:[code=java]package cn.itcast.heima
import java.io.*;

public class FilenameFilterTest
{
        public static void main(String[] args)
        {
                File file = new File("d:\\");
                String[] nameList = file.list(new MyFilenameFilter());
                for (String name : nameList)
                {
                        System.out.println(name);
                }
        }
}
//实现自己的FilenameFilter实现类
class MyFilenameFilter implements FilenameFilter
{
        public boolean accept(File dir, String name)
        {
                //如果文件名以.java结尾返回true
                return name.endsWith(".avi")
        }
}[/code]

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-8-1 14:21:33
报纸

回复 板凳 的帖子

学习了!原来可以这么简单!自己的知识还是差太多了!
回复 使用道具 举报
黑马网友  发表于 2011-8-2 00:41:34
地板

回复 板凳 的帖子

原来使用FilenameFilter可以这么简单,学习了,我之前把记录数目的 变量定义在了局部所以没迭代一个目录就输出了一次

评分

参与人数 1技术分 +1 收起 理由
admin + 1 继续努力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马