编写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("改文件内没有文件!");
    }
  }
}
相关文章
|
2月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
2月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
57 2
|
2月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
105 1
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
42 1
|
2月前
|
Java Python
如何通过Java程序调用python脚本
如何通过Java程序调用python脚本
32 0
|
10天前
|
Java 开发者
Java多线程编程中的常见误区与最佳实践####
本文深入剖析了Java多线程编程中开发者常遇到的几个典型误区,如对`start()`与`run()`方法的混淆使用、忽视线程安全问题、错误处理未同步的共享变量等,并针对这些问题提出了具体的解决方案和最佳实践。通过实例代码对比,直观展示了正确与错误的实现方式,旨在帮助读者构建更加健壮、高效的多线程应用程序。 ####
|
17天前
|
安全 Java 测试技术
Java并行流陷阱:为什么指定线程池可能是个坏主意
本文探讨了Java并行流的使用陷阱,尤其是指定线程池的问题。文章分析了并行流的设计思想,指出了指定线程池的弊端,并提供了使用CompletableFuture等替代方案。同时,介绍了Parallel Collector库在处理阻塞任务时的优势和特点。
|
8天前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
|
9天前
|
Java 开发者
Java多线程编程的艺术与实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的技术文档,本文以实战为导向,通过生动的实例和详尽的代码解析,引领读者领略多线程编程的魅力,掌握其在提升应用性能、优化资源利用方面的关键作用。无论你是Java初学者还是有一定经验的开发者,本文都将为你打开多线程编程的新视角。 ####
|
8天前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
下一篇
无影云桌面