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