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

查看本章节

查看作业目录


需求说明:

在一个文件夹内,查找占用磁盘空间最大的 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("改文件内没有文件!");
		}
	}

}

 

posted @ 2020-09-25 00:19  明金同学  阅读(82)  评论(0编辑  收藏  举报