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

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

需求说明:


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


13.png


实现思路:


创建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("改文件内没有文件!");
    }
  }
}
相关文章
|
18小时前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
5 0
|
1天前
|
Java Linux C语言
一步带你了解java程序逻辑控制
一步带你了解java程序逻辑控制
8 2
|
1天前
|
Java 数据安全/隐私保护
java中程序控制的典例
java中程序控制的典例
7 1
|
1天前
|
Java
JDK环境下利用记事本对java文件进行运行编译
JDK环境下利用记事本对java文件进行运行编译
8 0
|
2天前
|
存储 Java 数据库连接
使用Java开发桌面应用程序
使用Java开发桌面应用程序
9 0
|
2天前
|
关系型数据库 MySQL Java
通过使用阿里云服务器,搭建Java程序的运行环境
通过使用阿里云服务器,搭建Java程序的运行环境
|
3天前
|
Arthas 安全 Java
java服务报错 FileNotFoundException:打开的文件过多
java服务报错 FileNotFoundException:打开的文件过多
13 0
|
7天前
|
Oracle Java 关系型数据库
windows 下 win11 JDK17安装与环境变量的配置(配置简单详细,包含IJ中java文件如何使用命令运行)
本文介绍了Windows 11中安装JDK 17的步骤,包括从官方网站下载JDK、配置环境变量以及验证安装是否成功。首先,下载JDK 17的安装文件,如果没有Oracle账户,可以直接解压缩文件到指定目录。接着,配置系统环境变量,新建`JAVA_HOME`变量指向JDK安装路径,并在`Path`变量中添加。然后,通过命令行(cmd)验证安装,分别输入`java -version`和`javac -version`检查版本信息。最后,作者分享了如何在任意位置运行Java代码,包括在IntelliJ IDEA(IJ)中创建的Java文件,只需去掉包声明,就可以通过命令行直接运行。
|
9天前
|
存储 监控 Java
如何在Java中实现等待文件修改后再读取数据的功能?
如何在Java中实现等待文件修改后再读取数据的功能?
15 0
|
9天前
|
存储 Java 数据格式
Java实战:轻松掌握文件重命名与路径提取技巧
Java实战:轻松掌握文件重命名与路径提取技巧
15 0