本帖最后由 liyaotangLEO 于 2012-04-12 10:44:43 编辑

解决方案 »

  1.   

    一个迭代就解决了啊:
        /**
         * 借助递归处理所有的目录下的文件
         * @param fileOrDir 文件或目录
         */
        private void listAllFile(File fileOrDir) throws Exception {
            if (fileOrDir.isDirectory()) {
                File[] fs = fileOrDir.listFiles();
                log("找到目录[" + fileOrDir.getName() + "],其下子目录及文件数:" + fs.length);
                for (int i = 0; i < fs.length; i++) {
                    listAllFile(fs[i]);
                }
            } else {
                log("文件:" + fileOrDir.getName());
                //  想对这个文件干啥就干啥吧
            }
        }
      

  2.   

    就一小递归
    public static void getFileName(File file) {if (file.isDirectory()) {
    File[] files = file.listFiles();
    for (File file2 : files) {getFileName(file2);}
    }
    if (file.isFile()) {
    System.out.println(file.getName());
    //得到文件
    return;
    }}
      

  3.   

    再对得到的文件进行一下过滤处理就可以了!
    if(file.getName().lastIndexOf(".txt"))
    System.Out.Println(file.getName());
      

  4.   

    String.lastIndexOf方法返回指定子字符串在此字符串中最右边出现处的索引
    返回的是int类型,想你那样直接是不行,
    但我想到了可以这样String filename = file.getName();
    if (filename.lastIndexOf() == (filename.length()-4))
    {//..}