黑马程序员技术交流社区
标题:
请教递归问题
[打印本页]
作者:
doyxy
时间:
2014-3-30 23:42
标题:
请教递归问题
看视频学到了如何获取指定目录和它的子目录下的所有文件名,
现在想写一个方法,获取指定目录下和它的子目录下的所有.java文件,
但是写出来总是只能获取指定目录下的.java文件,子目录读取不到,请问这是怎么回事呢?
我写的代码如下
package FileTest;
import java.io.File;
import java.io.FilenameFilter;
public class FileTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("D:\\adt\\book\\JavaExercise");
// 获取指定目录下的所有文件和文件夹名称
// File[] files = file.listFiles();
// for (File f : files) {
// System.out.println(f.getName());
// }
getNames(file, ".java");
}
// 获取指定目录下的所有文件和子目录下的所有文件名称
// 加入过滤器,获取全部.java文件
private static void getNames(File file, String type) {
FileTypeFilter ftf = new FileTypeFilter(type);
if (file.exists() && file.isDirectory()) {
File[] files = file.listFiles(ftf);
for (File f : files) {
// System.out.println(f);
// System.out.println(type);
if (f.isDirectory()) {
getNames(f, type);
} else
System.out.println(f);
}
} else {
System.out.println("路径错误");
}
}
}
class FileTypeFilter implements FilenameFilter {
private String type;
FileTypeFilter(String type) {
this.type = type;
}
public boolean accept(File dir, String name) {
return (name.endsWith(type));
}
}
复制代码
作者:
孔丽阁
时间:
2014-3-31 09:43
File[] files = file.listFiles(ftf);这个文件名过滤器你加了之后,就只能获取到以.java文件结尾的文件,而它下面的文件夹就获取不到了,所以你的这个file.listFiles(ftf)就直接放弃了子文件夹下面的以.java文件结尾的文件。
作者:
doyxy
时间:
2014-3-31 11:25
请问该如何设置过滤器呢?
过滤器接收的是 accept(File dir, String name)
似乎不能过滤文件夹?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2