JAVA的递归查询指定后缀名文件的问题

各位好,我在做用java查询指定目录下及其子目录下是否有“.java”文件时,我用的是递归查询的方法,但是每次返回的只是指定目录下的“.java”文件,而不能返回子文件夹... 各位好,我在做用java查询指定目录下及其子目录下是否有“.java”文件时,我用的是递归查询的方法,但是每次返回的只是指定目录下的“.java”文件,而不能返回子文件夹中的“.java”文件,源码如下,麻烦各位大侠看下,我哪里做错了,小弟不胜感激:
import java.io.*;
class test2
{
public static void main(String[] args)
{

File fi=new File("D:\\BD\\java2016"); //指定查找目录
showdir(fi);

}

public static void showdir(File dir) //定义一个返回目录中所有文件的方法showdir
{

File[] files=dir.listFiles(new FilenameFilter() //定义过滤器,过滤文件类型为.java的文件
{
public boolean accept(File dir,String name)
{
return name.endsWith(".java");
}
});
for(int x=0;x<files.length;x++) //判断是否目录,是目录则递归调用showdir方法,不是则打印文件名
{
if(files[x].isDirectory())
showdir(files[x]);
else
System.out.println(files[x]);
}
}

}
展开
 我来答
紫薇参星
科技发烧友

2016-12-25 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3608万
展开全部

你的程序只打印指定目录下的“.java”文件,是因为dir.listFiles(new FilenameFilter());只返回过滤后的文件列表,所以返回的是指定目录下的“.java”文件

你的程序我帮你改好了,你看看吧

import java.io.*;
class test2
{
 public static void main(String[] args) 
 {
   File fi=new File("D:\\BD\\java2016");   //指定查找目录
   showdir(fi);
 }
 public static void showdir(File dir) //定义一个返回目录中所有文件的方法showdir
 {
  if(dir.isDirectory())
  {        //判断是否目录,
   File[] files=dir.listFiles(new FilenameFilter()   //定义过滤器,过滤文件类型为.java的文件
   {
    public boolean accept(File dir,String name)
    {
     return name.endsWith(".java");
    }
   });
   for(int x=0;x<files.length;x++)        //打印以.java结尾的文件名
   {
    System.out.println(files[x]); 
   }
   File[] files1=dir.listFiles();   //定义没有过滤器的文件列表
   for(int x=0;x<files1.length;x++)        
   {
    if(files1[x].isDirectory())   //如果是目录则递归调用showdir方法,不是目录则忽略
     showdir(files1[x]);  
   }
  }
 } 
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式