Java工具库——Commons IO的50个常用方法
工具库介绍
Commons IO(Apache Commons IO)是一个广泛用于 Java 开发的开源工具库,由Apache软件基金会维护和支持。这个库旨在简化文件和流操作,提供了各种实用工具类和方法,以便更轻松地进行输入输出操作。以下是 Commons IO 的一些主要特点和功能:
-
文件操作:Commons IO 提供了大量用于文件和目录操作的方法,包括创建、删除、重命名、复制、移动文件,以及递归地操作目录结构。
-
流处理:你可以使用 Commons IO 处理各种输入和输出流,包括读取、写入和操作流数据。这对于处理文本文件、二进制文件以及网络通信非常有用。
-
文件过滤和筛选:Commons IO 允许你轻松地筛选文件和目录,根据各种条件,如文件扩展名、文件大小、最后修改时间等。
-
文件内容操作:你可以比较两个文件的内容,查找文件中的文本,以及进行替换等操作。
-
自动关闭流:Commons IO 提供了自动关闭流的功能,确保在处理文件和流时,资源得以正确释放,而无需显式调用
close()
方法。 -
异常处理:库中的方法通常会处理 I/O 异常,以简化代码中的错误处理。
-
性能和可靠性:Commons IO 被广泛使用,因为它经过了精心设计,以提供高性能和可靠性。这对于处理大型文件和在生产环境中运行的应用程序非常重要。
Commons IO 是一个非常有用的工具库,特别是在需要处理文件和流的 Java 应用程序中。它可以显著简化日常的 I/O 任务,减少了编写重复性代码的需要,提高了开发效率。如果你是 Java 开发者,特别是在处理文件和流方面,建议考虑使用 Commons IO 来简化你的工作。你可以在 Apache Commons IO 的官方网站上找到详细的文档和示例代码,以了解如何使用这个库。
方法列举
-
拷贝文件:
File source = new File("source.txt"); File destination = new File("destination.txt"); FileUtils.copyFile(source, destination);
这个方法用于将一个文件从源路径复制到目标路径。
-
删除文件:
File fileToDelete = new File("fileToDelete.txt"); FileUtils.forceDelete(fileToDelete);
这个方法用于强制删除一个文件,即使它是只读的或不存在。
-
检查文件是否存在:
File fileToCheck = new File("checkFile.txt"); boolean fileExists = fileToCheck.exists();
用于检查给定文件是否存在。
-
递归拷贝目录:
File sourceDir = new File("sourceDir"); File destDir = new File("destDir"); FileUtils.copyDirectory(sourceDir, destDir);
这个方法将递归地拷贝一个目录及其所有内容到目标目录。
-
递归删除目录:
File directoryToDelete = new File("directoryToDelete"); FileUtils.deleteDirectory(directoryToDelete);
用于递归删除一个目录及其所有内容。
-
获取文件扩展名:
String fileName = "example.txt"; String fileExtension = FilenameUtils.getExtension(fileName);
通过文件名获取文件的扩展名,例如,对于 “example.txt”,将返回 “txt”。
-
判断文件是否是目录:
File file = new File("dir"); boolean isDirectory = file.isDirectory();
用于检查给定文件是否是目录。
-
创建目录:
File newDir = new File("newDir"); FileUtils.forceMkdir(newDir);
用于创建目录,包括创建任何中间目录(如果它们不存在)。
-
获取文件大小:
File file = new File("file.txt"); long fileSize = FileUtils.sizeOf(file);
获取文件的大小,以字节为单位。
-
读取文件到字符串:
File fileToRead = new File("readMe.txt"); String fileContent = FileUtils.readFileToString(fileToRead, "UTF-8");
用于将文件内容读取为字符串,可以指定字符编码。
-
写入字符串到文件:
File outputFile = new File("output.txt"); String content = "Hello, World!"; FileUtils.writeStringToFile(outputFile, content, "UTF-8");
用于将字符串写入文件,可以指定字符编码。
-
列出目录中的文件:
File directory = new File("directory"); String[] filesInDir = directory.list();
用于获取指定目录中的文件和子目录的名称列表。
-
获取文件的最后修改时间:
File file = new File("file.txt"); long lastModified = file.lastModified();
获取文件的最后修改时间,以毫秒为单位。
-
移动文件:
File oldFile = new File("oldFile.txt"); File newFile = new File("newFile.txt"); FileUtils.moveFile(oldFile, newFile);
用于将文件从一个位置移动到另一个位置。
-
查找文件:
File searchDir = new File("searchDir"); Collection<File> foundFiles = FileUtils.listFiles(searchDir, TrueFileFilter.TRUE, TrueFileFilter.TRUE);
用于在目录中查找文件,并将结果作为文件对象的集合返回。
-
关闭输入流:
InputStream inputStream = ...; // 初始化输入流 IOUtils.closeQuietly(inputStream);
用于关闭输入流,忽略任何可能的异常。
-
关闭输出流:
OutputStream outputStream = ...; // 初始化输出流 IOUtils.closeQuietly(outputStream);
用于关闭输出流,忽略任何可能的异常。
-
逐行读取文件:
File file = new File("file.txt"); LineIterator lines = FileUtils.lineIterator(file, "UTF-8"); while (lines.hasNext()) {String line = lines.next();// 处理每一行 } lines.close(); // 关闭 LineIterator
用于逐行读取文件内容,避免一次性加载整个文件。
-
拷贝输入流到输出流:
InputStream inputStream = ...; // 初始化输入流 OutputStream outputStream = ...; // 初始化输出流 IOUtils.copy(inputStream, outputStream);
用于将输入流的内容拷贝到输出流,通常用于文件拷贝。
-
拷贝文件内容到输出流:
File sourceFile = new File("source.txt"); OutputStream outputStream = ...; // 初始化输出流 FileUtils.copyFile(sourceFile, outputStream);
用于将文件内容拷贝到输出流,这样你可以将文件的内容传输到其他地方,如网络连接或压缩流。
-
获取文件的父目录:
File file = new File("file.txt"); File parentDir = file.getParentFile();
用于获取文件的父目录,返回一个
File
对象。 -
获取临时目录:
File tempDir = FileUtils.getTempDirectory();
用于获取操作系统的临时目录。
-
获取用户主目录:
File userHomeDir = FileUtils.getUserDirectory();
用于获取用户的主目录,通常是用户文件的根目录。
当然,我会继续列出更多 Commons IO 方法,以满足 50 个方法的要求。以下是更多的方法示例和详细解释: -
比较文件内容:
File file1 = new File("file1.txt"); File file2 = new File("file2.txt"); boolean contentEqual = FileUtils.contentEquals(file1, file2);
用于比较两个文件的内容是否相同。
-
检查文件是否可写:
File file = new File("writableFile.txt"); boolean isWritable = file.canWrite();
用于检查文件是否可写。
-
获取文件的绝对路径:
File file = new File("file.txt"); String absolutePath = file.getAbsolutePath();
用于获取文件的绝对路径。
-
获取目录下的子目录:
File directory = new File("parentDir"); File[] subdirectories = directory.listFiles(File::isDirectory);
用于获取目录下的所有子目录。
-
获取文件的扩展名(不包括点号):
String fileName = "example.txt"; String extension = FilenameUtils.getExtension(fileName);
用于获取文件的扩展名,不包括点号,例如,对于 “example.txt”,将返回 “txt”。
-
判断文件是否是隐藏文件:
File file = new File("hiddenFile.txt"); boolean isHidden = file.isHidden();
用于检查文件是否是隐藏文件。
-
获取操作系统文件分隔符:
String fileSeparator = File.separator;
用于获取操作系统的文件分隔符,例如,在 Windows 中是反斜杠(\),在 Unix/Linux 中是正斜杠(/)。
-
关闭 Reader:
Reader reader = ...; // 初始化 Reader IOUtils.closeQuietly(reader);
用于关闭字符流 Reader,忽略任何可能的异常。
-
关闭 Writer:
Writer writer = ...; // 初始化 Writer IOUtils.closeQuietly(writer);
用于关闭字符流 Writer,忽略任何可能的异常。
-
递归列出目录中的文件:
File directory = new File("parentDir"); Collection<File> allFiles = FileUtils.listFiles(directory, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
用于递归列出目录中的所有文件,包括子目录中的文件。
-
获取文件的最后访问时间:
File file = new File("file.txt"); long lastAccessTime = FileUtils.lastAccessed(file);
用于获取文件的最后访问时间,以毫秒为单位。
-
删除目录中的文件:
File directory = new File("dirToDelete"); FileUtils.cleanDirectory(directory);
用于删除目录中的所有文件,但保留目录结构。
-
获取临时文件:
File tempFile = File.createTempFile("temp", ".txt");
用于创建一个临时文件,通常在操作完成后会被自动删除。
-
获取文件的父目录路径:
File file = new File("file.txt"); String parentPath = file.getParent();
用于获取文件的父目录的路径。
-
获取文件的大小的可读表示:
File file = new File("file.txt"); String readableSize = FileUtils.byteCountToDisplaySize(file.length());
用于将文件大小以字节表示转换为易读的格式,例如 “2.5 MB”。
-
创建临时目录:
File tempDir = File.createTempFile("tempDir", ""); tempDir.delete(); // 删除文件,使其成为目录
用于创建一个临时目录。
-
读取 URL 内容到字符串:
String urlContent = IOUtils.toString(new URL("https://example.com"));
用于将 URL 的内容读取为字符串。
-
写入字符串到 URL:
URL url = new URL("https://example.com"); String content = "Hello, World!"; IOUtils.write(content, url.openConnection().getOutputStream(), "UTF-8");
用于将字符串写入 URL。
-
比较目录结构:
File dir1 = new File("directory1"); File dir2 = new File("directory2"); boolean isSame = FileUtils.contentEqualsIgnoreEOL(dir1, dir2, "UTF-8");
用于比较两个目录的内容是否相同,忽略不同操作系统的换行符。
-
获取文件的创建时间:
File file = new File("file.txt"); BasicFileAttributes attributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class); FileTime creationTime = attributes.creationTime();
用于获取文件的创建时间。
-
文件拷贝,保留文件属性:
File source = new File("source.txt"); File destination = new File("destination.txt"); FileUtils.copyFile(source, destination, true);
用于拷贝文件,保留原文件的属性,如权限和时间戳。
-
获取临时文件夹的路径:
String tempDirPath = System.getProperty("java.io.tmpdir");
用于获取操作系统的临时文件夹路径。
-
文件重命名:
File oldFile = new File("oldName.txt"); File newFile = new File("newName.txt"); FileUtils.moveFile(oldFile, newFile);
用于将文件重命名。
-
文件内容替换:
File file = new File("file.txt"); String oldText = "replaceThis"; String newText = "withThis"; String replacedText = FileUtils.readFileToString(file, "UTF-8"); replacedText = StringUtils.replace(re
placedText, oldText, newText);
FileUtils.writeStringToFile(file, replacedText, “UTF-8”);
```
用于替换文件中的指定文本。
-
递归删除指定文件:
File directory = new File("parentDir"); String fileNameToDelete = "fileToDelete.txt"; FileFilter fileFilter = new NameFileFilter(fileNameToDelete); Collection<File> foundFiles = FileUtils.listFiles(directory, fileFilter, TrueFileFilter.TRUE); for (File fileToDelete : foundFiles) {FileUtils.forceDelete(fileToDelete); }
用于递归删除指定文件名的文件。
-
将文件内容附加到已存在的文件:
File fileToAppend = new File("append.txt"); FileUtils.writeStringToFile(fileToAppend, "Appended Text", "UTF-8", true);
用于将文本内容附加到已存在的文件。
-
递归列出目录中的文件和子目录:
File directory = new File("parentDir"); Collection<File> allFilesAndDirs = FileUtils.listFilesAndDirs(directory, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
用于递归列出目录中的所有文件和子目录。
相关文章:

Java工具库——Commons IO的50个常用方法
工具库介绍 Commons IO(Apache Commons IO)是一个广泛用于 Java 开发的开源工具库,由Apache软件基金会维护和支持。这个库旨在简化文件和流操作,提供了各种实用工具类和方法,以便更轻松地进行输入输出操作。以下是 Com…...

Git: 仓库clone和用户配置
git clone 两种方式clone远程仓库到本地。 通过ssh 命令格式: git clone gitxxxxxx.git使用这种方法需要提前创建ssh秘钥。 首先打开一个git控制台,输入命令 ssh-keygen -t ed25519 -C “xxxxxxxxxx.com”输入命令后需要点击四次回车,其…...

构建外卖小程序:技术要点和实际代码
1. 前端开发 前端开发涉及用户界面设计和用户交互。HTML、CSS 和 JavaScript 是构建外卖小程序界面的主要技术。 <!-- HTML 结构示例 --> <header><h1>外卖小程序</h1><!-- 其他导航元素 --> </header> <main><!-- 菜单显示 -…...

ubuntu安装配置svn
目录 简介安装SVN 启动模式方式1:单库svnserve方式方式2:多库svnserve方式 SVN 创建版本库1.svn 服务配置文件 svnserve.conf2.用户名口令文件 passwd3.权限配置文件4.多库方式运行 SVN 检出操作SVN 解决冲突SVN 提交操作SVN 版本回退SVN 查看历史信息1.svn log2.svn diff3.svn…...

『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程
『Jmeter入门万字长文』 | 从环境搭建、脚本设计、执行步骤到生成监控报告完整过程 1 Jmeter安装1.1 下载安装1.2 Jmeter汉化1.2.1 临时修改1.2.2 永久修改 1.3 验证环境 2 测试对象2.1 测试对象说明2.2 测试对象安装2.2.1 下载安装2.2.2 启动测试对象服务2.2.3 访问测试对象2.…...

Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查
LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查 介绍Lua表lua表初始化lua移除引用lua中向表中添加数据lua中表中移除数据lua表中连接数据lua表中数据排序获取lua表长度获取表中最大值 UnityC#中LuaTableUnityC#中LuaArrayTable、LuaDictTable、LuaDictTable<K,V>…...

Spring常见面试题
https://blog.csdn.net/a745233700/article/details/80959716?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169847982516800213061720%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id169847982516800213061720&biz_id0&…...

通过Vue自带服务器实现Ajax请求跨域(vue-cli)
通过Vue自带服务器实现Ajax请求跨域(vue-cli) 跨域 原理:从A页面访问到B页面,并且要获取到B页面上的数据,而两个页面所在的端口、协议和域名中哪怕有一个不对等,那么这种行为就叫跨域。注意:类…...

Vue2-计算属性的用法
题记 vue2计算属性的用法 反转字符串 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>实例</title> <script src"https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </hea…...

SM3加密udf
SM3加密udf maven xml <dependencies> <!-- 配置日志 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dep…...

ce从初阶到大牛(两台主机免密登录)
一、配置ssh远程连接 实现两台linux主机之间通过公钥验证能够互相实现免密登陆 1.确认服务程序是否安装 rpm -qa | grep ssh 2.是否启动 ps -aux | grep ssh 3.生成非对称公钥 ssh-keygen -t rsa 4.公钥发送到客户端 cd /root/.ssh/ ssh-copy-id root192.168.170.134 因为…...

CS224W2.3——传统基于特征的方法(图层级特征)
前两篇中我们讨论了节点层级的特征表示、边层级的特征表示: CS224W2.1——传统基于特征的方法(节点层级特征)CS224W2.2——传统基于特征的方法(边层级特征) 在这篇中,我们将重点从整个图中提取特征。换句话说,我们想要描述整个图结构的特征…...

【CSS】包含块
CSS规范中的包含块 包含块的内容: 元素的尺寸和位置,会受它的包含块所影响。 对于一些属性,例如 width, height, padding, margin,绝对定位元素的偏移值(比如 position 被设置为 absolute 或 fixed)&…...

[SpringCloud] Nacos 简介
目录 一、Nacos,启动! 1、安装 Nacos 2、运行 Nacos 3、Nacos 服务注册 二、Nacos 服务多级存储模型 1、服务跨集群分配 2、NacosRule 负载均衡(优先本地) 3、服务实例的权重设置 4、环境隔离 三、Nacos 注册中心细节分…...

TypeScript - 字符串的字面类型
啥是字面量类型 字面量类型,是限制了一个字符串变量的取值范围只能某几个固定字符串中的一个。 我感觉 与枚举类型有异曲同工之妙。 字符串字面量类型有啥用 没啥用。 就是来限制字符串变量不能随便赋值的。 定义一个我看看 让你读书,但是只有四本书可以…...

CRM客户管理系统源码 带移动端APP+H5+小程序
CRM客户管理系统源码 带移动端APPH5小程序 开发环境: thinkphp mysql 功能介绍: 1、 办公管理:审批管理、工作报告、日程管理、办公审批、公告管理 2、 客户管理:我的客户、客户列表、成交客户、行业类别、预查、地区列表、客户状态、客…...

Mac版好用的Git客户端 Fork 免激活
Fork是一款强大的Git客户端软件,在Mac和Windows操作系统上都可以使用。汇集了众多先进的功能和工具,可以帮助用户更方便地管理和控制Git仓库。 Fork的界面简洁直观,易于使用。它提供了许多高级的Git功能,如分支管理、合并、提交、…...

有一个带头结点的单链表L,设计一个算法使其元素递增有序
有一个带头结点的单链表L,设计一个算法使其元素递增有序 代码思路: 我这里懒得搞那个指针了,直接遍历一遍链表,把链表的元素复制到数组arr里面 对数组A进行一下排序,排完之后再把元素复制到L里面。 至于排序你用啥算…...

JAVA将EEE MMM dd HH:mm:ss zzz yyyy日期格式化为yyyy-MM-dd HH:mm:ss形式
1、将EEE MMM dd HH:mm:ss zzz yyyy格式的数据转换成yyyy-MM-dd HH:mm:ss 代码如下 public static void main(String[] args) throws ParseException {String dateStr "Mon Oct 26 15:19:15 CST 2020";DateFormat cstFormate new SimpleDateFormat("yyyy-MM…...

【Qt】文件系统
文章目录 文件系统文件操作案例:显示路径到标题框,显示内容到文本框对文件进行写操作获取文件相关信息 文件系统 Qt 通过QIODevice提供了对 I/O 设备的抽象,这些设备具有读写字节块的能力,下面是 I/O 设备的类图: QIO…...

PostgreSQL 基础知识
执行环境: psql 1. 创建一个表格 CREATE TABLE customers ( customer_id serial PRIMARY KEY,firstname VARCHAR(100) NOT NULL,lastname VARCHAR(100) NOT NULL,username VARCHAR(50) UNIQUE NOT NULL,password VARCHAR(50) NOT NULL,email VARCHAR(255) UNIQUE …...

基于 ResNet18 架构使用 deformable convolution的车道线检测
下面是一个基于关键点的车道线检测网络的 PyTorch 代码示例,其中使用了 deformable convolution。该代码示例基于 ResNet18 架构,可以根据实际情况进行修改。 首先,需要导入必要的库和模块: import torch import torch.nn as nn…...

C++in/out输入输出流[IO流]
文章目录 1. C语言的输入与输出2.C的IO流2.1流的概念2.2CIO流2.3刷题常见while(cin >> str)重载强制类型转换运算符模拟while(cin >> str) 2.4C标准IO流2.5C文件IO流1.ifstream 1. C语言的输入与输出 C语言用到最频繁的输入输出方式就是scanf ()与printf()。 scanf…...

MongoDB的安装
MongoDB的安装 1、Windows下MongoDB的安装及配置 1.1 下载Mongodb安装包 下载地址: https://www.mongodb.com/try/download http://www.mongodb.org/dl/win32 MongoDB Windows系统64位下载地址:http://www.mongodb.org/dl/win32/x86_64 MongoDB W…...

SQL查询优化---如何查询截取分析
慢查询日志 1、慢查询日志是什么 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。 具体指运行时间超过long_query_time值的…...

vue3基础流程
目录 1. 安装和创建项目 2. 项目结构 3. 主要文件解析 3.1 main.js 3.2 App.vue 4. 组件和Props 5. 事件处理 6. 生命周期钩子 7. Vue 3的Composition API 8. 总结和结论 响应式系统: 组件化: 易于学习: 灵活性: 社…...

Vue 数据绑定 和 数据渲染
目录 一、Vue快速入门 1.简介 : 2.MVVM : 3.准备工作 : 二、数据绑定 1.实例 : 2.验证 : 三、数据渲染 1.单向渲染 : 2.双向渲染 : 一、Vue快速入门 1.简介 : (1) Vue[/vju/],是Vue.js的简称,是一个前端框架,常用于构建前端用户…...

【原创】解决Kotlin无法使用@Slf4j注解的问题
前言 主要还是辟谣之前的网上的用法,当然也会给出最终的使用方法。这可是Kotlin,关Slf4j何事!? 辟谣内容:创建注解来解决这个问题 例如: Target(AnnotationTarget.CLASS) Retention(AnnotationRetentio…...

CDN是如何实现全球节点同步的
当谈到内容交付网络(Content Delivery Network,CDN)加速时,我们必须了解CDN是如何实现全球节点同步的。CDN是一种网络架构,通过将内容分发到全球各地的服务器节点,以降低用户访问网站或应用程序时的延迟和提…...

Centos7 Linux系统下生成https的crt和key证书
linux下生成https的crt和key证书 步骤如下: x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法。 Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使…...