【小家java】Java之Apache Commons-IO使用精讲(FileUtils、IOUtils、FileFilter全覆盖)(下)

简介: 【小家java】Java之Apache Commons-IO使用精讲(FileUtils、IOUtils、FileFilter全覆盖)(下)

FileUtils


FileUtils类包含使用File对象的工具方法。包括读写、复制和比较等等。


    public static void main(String[] args) throws IOException {
       File file = new File("/application.properties");
       List<String> lines = FileUtils.readLines(file, "UTF-8");
       System.out.println(lines);
   }


  • byteCountToDisplaySize:挺人性化的一个方法,可以吧字节数组的长度,转化成用户良好的单位,如EB、GB、MB、KB、bytes等等


    public static void main(String[] args) throws Exception {
        try (InputStream in1 = new URL("http://commons.apache.org").openStream()) {
            String s = FileUtils.byteCountToDisplaySize(IOUtils.toByteArray(in1).length);
            System.out.println(s); //26 KB
        }
    }


checksum、checksumCRC32:类似于校验MD5和。如long csum = FileUtils.checksum(file, new CRC32()).getValue();,一般下载来一个文件后,为了安全可以校验一把


cleanDirectory:把指定文件夹里面的东西全部删除掉


contentEquals:依赖于IOUtils.contentEquals


convertFileCollectionToFileArray:把File的集合转换为File的数组


copyDirectory(srcDir,destDir,FileFilter):吧src的文件夹内容copy(或者剪切)到dest里面,可以使用FileFilter过滤


copyFile:可以一个文件copy到另外一个文件,也可以copy到outputStream里面。


copyFileToDirectory:


copyInputStreamToFile:


copyURLToFile:


deleteDirectory:递归删除这个文件夹里面的所有东西(包括文件夹自己)


deleteQuietly:既可以删除文件,也可以递归删除文件夹


directoryContains:指定文件夹下是否包含某个文件


forceDelete:强制删除一个文件。如果是文件夹,也会递归删除掉。


forceMkdir:强制创建一个目录


getTempDirectoryPath:拿到IO的临时文件夹路径


isFileNewer、isFileOlder:判断该文件的最后修改时间,是否新于给定的Date时间(或者给定文件的lastModified)


listFiles、listFilesAndDirs:拿到指定文件夹下所有的文件


moveDirectory、moveFile


openInputStream:效果同new FileInputStream


openOutputStream:同上


readFileToByteArray、readFileToString、readLines


sizeOf、sizeOfAsBigInteger、:拿到文件/文件夹的大小


sizeOfDirectory、sizeOfDirectoryAsBigInteger


toFile(URL url):吧网络上的资源字节编程一个文件


write、writeByteArrayToFile、writeLines、writeStringToFile:把传入的data串写入到File里面

FilenameUtils


FilenameUtils类包含工具方法不需要使用File对象就可以操作文件名。该类致力于屏蔽Unix和Windows之间的不同,避免这些环境之间的转换(例如,从开发到生产)。 开发在windows、生产在Linux


一般使用较少,这里不做过多介绍.

FileSystemUtils:2.6版本已经废弃。推荐使用JDK自己的FileStore代替


LineIterator:行迭代器


提供灵活的方式使用一个基于行的文件。可以直接,或通过FileUtils或IOUtils的工厂方法创建实例。推荐使用模式:


备注:也是需要close的

Filefilter:包含IOFileFilter、FilenameFilter等。可以在copy、remove等等操作的时候,对文件进行各种过滤行为


此包自带一些常用的Filter如:AgeFileFilter、CanReadFileFilter、CanWriteFileFilter、DirectoryFileFilter、EmptyFileFilter、HiddenFileFilter等等。基本能满足我们所有需求


比较器:比如按照文件名倒序、文件大小倒序这种需求,用此比较器会非常方便。也内置了很多的比较器实现


如:SizeFileComparator、ReverseComparator、LastModifiedFileComparator、ExtensionFileComparator等等


org.apache.commons.io.input和org.apache.commons.io.output包含各种有用、实用的流实现。


1.空输出流——默默的吸收、消化发给它的所有数据。


2.计算流——统计传递的字节数。(CountingInputStream、CountingOutputStream,这个挺好用的)


3.代理流——委托恰当的方法代理。


CopyUtils:已经过期,请使用IOUtils代替

相关文章
|
5月前
|
监控 Java API
现代 Java IO 高性能实践从原理到落地的高效实现路径与实战指南
本文深入解析现代Java高性能IO实践,涵盖异步非阻塞IO、操作系统优化、大文件处理、响应式网络编程与数据库访问,结合Netty、Reactor等技术落地高并发应用,助力构建高效可扩展的IO系统。
170 0
|
2月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
198 1
|
4月前
|
Java 测试技术 API
Java IO流(二):文件操作与NIO入门
本文详解Java NIO与传统IO的区别与优势,涵盖Path、Files类、Channel、Buffer、Selector等核心概念,深入讲解文件操作、目录遍历、NIO实战及性能优化技巧,适合处理大文件与高并发场景,助力高效IO编程与面试准备。
|
4月前
|
SQL Java 数据库连接
Java IO流(一):字节流与字符流基础
本文全面解析Java IO流,涵盖字节流、字符流及其使用场景,帮助开发者理解IO流分类与用途,掌握文件读写、编码转换、异常处理等核心技术,通过实战案例提升IO编程能力。
|
5月前
|
存储 Java Linux
操作系统层面视角下 Java IO 的演进路径及核心技术变革解析
本文从操作系统层面深入解析Java IO的演进历程,涵盖BIO、NIO、多路复用器及Netty等核心技术。分析各阶段IO模型的原理、优缺点及系统调用机制,探讨Java如何通过底层优化提升并发性能与数据处理效率,全面呈现IO技术的变革路径与发展趋势。
128 2
|
9月前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
385 23
|
10月前
|
缓存 网络协议 Java
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
322 0
|
2月前
|
人工智能 数据处理 API
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
Apache Flink Agents 是由阿里云、Ververica、Confluent 与 LinkedIn 联合推出的开源子项目,旨在基于 Flink 构建可扩展、事件驱动的生产级 AI 智能体框架,实现数据与智能的实时融合。
426 6
阿里云、Ververica、Confluent 与 LinkedIn 携手推进流式创新,共筑基于 Apache Flink Agents 的智能体 AI 未来
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
335 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
4月前
|
SQL 人工智能 数据挖掘
Apache Flink:从实时数据分析到实时AI
Apache Flink 是实时数据处理领域的核心技术,历经十年发展,已从学术项目成长为实时计算的事实标准。它在现代数据架构中发挥着关键作用,支持实时数据分析、湖仓集成及实时 AI 应用。随着 Flink 2.0 的发布,其在流式湖仓、AI 驱动决策等方面展现出强大潜力,正推动企业迈向智能化、实时化的新阶段。
588 9
Apache Flink:从实时数据分析到实时AI