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

    科技2023-11-18  76

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

    题目:遍历这个目录下所有的文件,找出这些文件里,最大的和最小(非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只能表示其所在目录下的最大最小文件(而不是全部文件夹中),因此改为接收文件的文件的名字与文件大小的数字,解决问题。

    Processed: 0.010, SQL: 9