java中的一个小问题

it小码农 发布于 2017/02/05 20:16
阅读 369
收藏 0

想遍历一个路径内所有.txt文件。但是我这样写只能遍历出每一次文件夹中.txt文件
的次数,要怎么一次统计出所有.txt文件

public static void eachFile(File a){

        int sum=0;

        File[] b= a.listFiles();
        for (File file : b) {


                if (file.isFile()&&file.getName().endsWith(".txt")) {
                    sum++;
                }else  {
                    eachFile(file);
                } 


          }

        System.out.println("文件的数量是"+sum);


    }

 

加载中
0
登琼
登琼
import java.io.File;

public class Test {

	public static int eachFile(File filePath) {
		int sum = 0;
		if (filePath.isDirectory()) {
			File[] b = filePath.listFiles();
			for (File file : b) {
				if (file.isFile() && file.getName().endsWith(".txt")) {
					sum++;
				} else {
					sum += eachFile(file);
				}
			}
		}
		return sum;
	}

	public static void main(String[] args) {
		System.out.println("文件的数量是" + eachFile(new File("D:\\Program Files\\Java")));
	}
}

 

1
GestureWei
GestureWei
为什么函数返回值不是统计的文件的数量?这不就可以递归统计了……
1
yysf
yysf
不用递归的话可以试试Files.walkFileTree函数,他是用来遍历文件目录的,在jdk7版本以后有
0
excepiton
excepiton
sum+=eachFile(file);
0
mn_1127
mn_1127
应该把sum变量定义放到方法体的外面吧!
0
dfsfsdfsfs
dfsfsdfsfs

把else去掉就好了

0
公孙二狗
公孙二狗

sum 是局部变量,作用域是当前函数,换成 static 的成员变量就可以了

返回顶部
顶部