遍历子文件夹

遍历给定路径下的所有文件(包括子文件夹),并打印出最大值文件和最小值文件的相关信息,代码未优化,速度有点寒碜,16万个文件遍历完共花费60000ms-62000ms,测试环境:i7 6500处理器。

import java.io.File;

public class TestFile {
	private static int max=0;//记录最大文件的下标
	private static int min=0;//记录最小文件的下标
	private static File fmax;//存储最大文件
	private static File fmin;//存储最小文件
	private static File[] fls=new File[16];//存储遍历的所有文件
	private static int i=0;//记录所有文件的下标
	public static void listChild(File f) {
		if(f.isDirectory()) {
			File[] fs=f.listFiles();
			if(fs!=null) {//如果此文件夹下无文件则退出此函数
				for(File fl:fs) {
					listChild(fl);//通过此递归函数遍历所有文件
				}
			}
		}else {
			if(i>=fls.length) {
				File[] fls1=fls;
				fls=new  File[fls.length*2];
				System.arraycopy(fls1,0, fls,0, fls1.length);;
			}
			fls[i]=f;
			if(fls[max].length()<fls[i].length()) {
				max=i;
				fmax=fls[i];
			}else if(fls[min].length()>fls[i].length()) {
				min=i;
				fmin=fls[i];
			}
			i++;
		}
	}
	
	public static void main(String[] args) {
		File f=new File("C:\\Windows");
		System.out.println("正在遍历所有文件中。。。");
		System.out.println("请稍等。。。");
		long start=System.currentTimeMillis();
		listChild(f);
		long end=System.currentTimeMillis();
		System.out.println("此算法共耗时:"+(end-start));
		System.out.println("最大的文件的文件名为:"+fmax.getName());
		System.out.println("最大文件的大小为:"+fmax.length());
		System.out.println("最小的文件的文件名为:"+fmin.getName());
		System.out.println("最小文件的大小为:"+fmin.length());
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值