JAVA 10.6 I/O习题 递归遍历查找子目录中最大最小文件

该代码片段展示了如何在Java中遍历指定目录及其子目录,找出其中最大和最小(非0)的文件。通过递归实现,利用全局变量记录最大和最小文件的名称及大小。注意点在于必须使用全局变量来保存整个目录结构中的最大和最小文件信息,而非仅限于当前目录。
摘要由CSDN通过智能技术生成

查找子目录中最大最小文件

题目:遍历这个目录下所有的文件,找出这些文件里,最大的和最小(非0)的那个文件,打印出他们的文件名。
实现代码:

package IOtext2;

import java.io.File;
import java.io.IOException;

public class IOtext2 {
    static File f = new File("d:/book");
    static String maxn;
    static String minn;
    static long maxlength = 0;
    static long minlength = 10000000;

    public static void main(String[] args) throws IOException {

        maxFile(f);

        System.out.println(maxn + " " + maxlength);
        System.out.println(minn + " " + minlength);
    }

    public static void maxFile(File ft) {//递归实现查找子目录中最大最小文件
        File[] fx = ft.listFiles();  //listFiles读入目录下所有子文件及子文件夹(不包括2级子)
        for (File x : fx) {//使用增强for循环
            if (x.isDirectory()) {
                maxFile(x);
            }
            if (x.isFile()) {//去除文件夹
                if (x.length() > maxlength) {
                    maxlength = x.length();
                    maxn = x.getName();
                }
                if (x.length() < minlength) {
                    minlength = x.length();
                    minn = x.getName();
                }
            }
        }
    }
}

几个小注意点:需要用全局变量配合递归来记录文件。应用isDirectory区别文件夹与文件。
一开始想把max与min用文件类表示,然后指向相应文件,但是由于文件的创建只能是固定位置,而查找出的最大最小文件的
位置应该是未知的,如果用文件类的max,min,会出现max与min只能表示其所在目录下的最大最小文件(而不是全部文件夹中),因此改为接收文件的文件的名字与文件大小的数字,解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值