package A;
import java.io.File;
import java.io.FileFilter;
import java.util.Arrays;
import java.io.FileFilter;
public class AA{
/********** Begin **********/
public static void main(String[] args) {
File f = new File("C:\\Users\\Anonymous\\eclipse-workspace\\myNet");
countNum(f,0,0);
}
public static void countNum(File f,int num1,int num2) {
File[] files = f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
return pathname.isDirectory()||pathname.getName().endsWith(".java")||pathname.getName().endsWith(".class"); }
});
for(File file:files) {
if(file.isDirectory()) {
countNum(file,num1,num2);
}
else {
if(file.getName().endsWith(".java")) {
num1++;
}
else if(file.getName().endsWith(".class")) {
num2++;
}
}
}
System.out.println(num1+","+num2);
}
/********** End **********/
}
输出打印结果为:
0,0
0,1
0,1
0,0
1,0
1,0
0,0
0,0
其中文件有2个java和c2个lass文件 为什么打印结果为1?而不是2? 还有如何避免递归重复输出呢?
思路:
1.创建File对象,用file.list()方法返回所有文件包括文件夹,
2.用isFile判断是否为文件;
3.分别统计扩展名为java,class的文件数就可以了。
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632