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]);
}
}
} 展开
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]);
}
}
} 展开
1个回答
展开全部
你的程序只打印指定目录下的“.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]);
}
}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询