编写Java程序,在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小

时间:2022-04-28 03:48:10

查看本章节

查看作业目录


需求说明:

在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小

编写Java程序,在一个文件夹内,查找占用磁盘空间最大的 jpg 文件,并输出文件大小

实现思路:

创建ImageFileFilter类实现FilenameFilter接口,且重写accept方法,该方法中对文件后缀.jpg进行判断

因涉及到比较文件大小操作,创建比较器类 FileComparator,实现 java.util.Comparator 接口,为该类添加泛型 File,并重写 compare(File file1,File file2) 方法,该方法的作用是对两个文件进行比较。

创建运行Java类,在main方法中定义File指向目录,调用listFiles方法,并且传入实例化的过滤对象得到文件数组

调用Arrays.sort方法传入数组及比较类对象,实现排序

输出数组中第一个元素即是文件最大的

实现代码:

文件过滤器类(ImageFileFiter)

import java.io.File;
import java.io.FilenameFilter; public class ImageFileFiter implements FilenameFilter { @Override
public boolean accept(File dir, String name) {
//指定后缀名为.jpg的文件作为过滤条件
return name.endsWith(".jpg");
} }

比较器类(FileComparator)

import java.io.File;
import java.util.Comparator; public class FileComparator implements Comparator { @Override
public int compare(Object o1, Object o2) {
File file1 = (File)o1;
File file2 = (File)o2;
if (file1.length()>file2.length()) {
return -1;
} else if (file1.length()<file2.length()) {
return 1;
}else{
return 0;
}
}
}

启动器类(FindMaximumImageFile)

import java.io.File;
import java.util.Arrays; public class FindMaximumImageFile { public static void main(String[] args) {
//创建需要访问的目录对象
File directory = new File("D:\\YMJ\\E7篮球社\\JPG 预览图");
//根据创建的文件过滤对象,过滤出所有的jpg文件,返回一个file对象
File[] files = directory.listFiles(new ImageFileFiter());
//判断目录内是否有子文件或者子目录
if (files != null) {
//使用创建的比较器,按照文件大小降序排序
Arrays.sort(files,new FileComparator());
//数组内的第一个元素就是占用磁盘空间最大的文件
File targetFile =files[0];
//打印出该文件的文件路径和文件大小
System.out.println("文件路径:"+targetFile.getAbsolutePath());
System.out.println("文件大小:"+targetFile.length());
} else {
System.out.println("改文件内没有文件!");
}
} }