使用 Apache Commons IO 实现文件读写

在 Java 编程中,文件读写是常见的操作。虽然 Java 标准库提供了基本的文件 I/O 功能,但使用 Apache Commons IO 库可以进一步简化这些操作,提高开发效率。Apache Commons IO 是一个强大的工具库,提供了许多实用的类和方法,用于处理文件和 I/O 操作。下面将详细介绍如何使用 Apache Commons IO 实现文件的读写操作。

1. 引入依赖

首先,你需要在你的项目中引入 Apache Commons IO 库。如果你使用 Maven 构建项目,可以在 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.16.1</version>
</dependency>

在这里插入图片描述

2. 文件读取

Commons IO 提供了多种方法来读取文件内容,包括读取整个文件内容、逐行读取文件内容等。

2.1 读取整个文件内容

使用 FileUtils.readFileToString 方法可以方便地读取整个文件内容,并将其转换为字符串。

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.net.URL;
import java.io.IOException;

public class FileReadExample {
    public static void main(String[] args) {
        URL resourceUrl = FileReadExample.class.getClassLoader().getResource("FileRead.txt");
        if (resourceUrl!= null) {
            File file = new File(resourceUrl.getFile());
            try {
                String content = FileUtils.readFileToString(file, "UTF-8");
                System.out.println("文件内容: \n" + content);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

2.2 逐行读取文件内容

使用 FileUtils.readLines 方法可以逐行读取文件内容,并将其存储在 List<String> 中。

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.net.URL;
import java.io.IOException;
import java.util.List;

public class FileReadLinesExample {
    public static void main(String[] args) {
        URL resourceUrl = FileReadLinesExample.class.getClassLoader().getResource("FileRead.txt");
        if (resourceUrl!= null) {
            File file = new File(resourceUrl.getFile());
            try {
                List<String> lines = FileUtils.readLines(file, "UTF-8");
                for (String line : lines) {
                    System.out.println("行内容: " + line);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

3. 文件写入

Commons IO 提供了多种方法来写入文件内容,包括写入字符串、逐行写入等。

3.1 写入字符串到文件

使用 FileUtils.writeStringToFile 方法可以将字符串写入文件。

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class FileWriteExample {
    public static void main(String[] args) {
        File file = new File("output.txt");
        String content = "Hello, World!";
        try {
            FileUtils.writeStringToFile(file, content, "UTF-8");
            System.out.println("文件写入成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.2 逐行写入文件

使用 FileUtils.writeLines 方法可以逐行写入文件内容。

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class FileWriteLinesExample {
    public static void main(String[] args) {
        File file = new File("output.txt");
        List<String> lines = Arrays.asList("第一行", "第二行", "第三行");
        try {
            FileUtils.writeLines(file, lines, "UTF-8");
            System.out.println("文件写入成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4. 文件复制与移动

Commons IO 还提供了方便的文件复制和移动方法。

4.1 文件复制

使用 FileUtils.copyFile 方法可以将一个文件复制到另一个文件。

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class FileCopyExample {
    public static void main(String[] args) {
        File sourceFile = new File("source.txt");
        File destFile = new File("destination.txt");
        try {
            FileUtils.copyFile(sourceFile, destFile);
            System.out.println("文件复制成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

4.2 文件移动

使用 FileUtils.moveFile 方法可以将一个文件移动到另一个位置。

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

public class FileMoveExample {
    public static void main(String[] args) {
        File sourceFile = new File("source.txt");
        File destFile = new File("destination.txt");
        try {
            FileUtils.moveFile(sourceFile, destFile);
            System.out.println("文件移动成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5. 文件删除

Commons IO 还提供了方便的文件删除方法。

5.1 删除文件

使用 FileUtils.deleteQuietly 方法可以删除文件或目录。

import org.apache.commons.io.FileUtils;

import java.io.File;

public class FileDeleteExample {
    public static void main(String[] args) {
        File file = new File("example.txt");
        boolean deleted = FileUtils.deleteQuietly(file);
        if (deleted) {
            System.out.println("文件删除成功");
        } else {
            System.out.println("文件删除失败");
        }
    }
}

6. 总结

Apache Commons IO 提供了丰富的工具类,可以大大简化文件读写操作。通过使用 FileUtils 类,你可以轻松地读取和写入文件内容,进行文件复制、移动和删除等操作。Commons IO 不仅提高了代码的可读性和可维护性,还减少了开发人员的工作量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/927985.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux开发板使用wifi过程

1.buildroot WIFI 工具配置 首先要给文件系统添加一些操作 WIFI 的工具。进入 buildroot 源码目录里&#xff0c;接着运行“make menuconfig”进入图形配置界面&#xff0c;配置如下&#xff1a; → Target packages → Networking applications→ [*] wireless tools //选中…

C# 元组

文章目录 一、元组&#xff08;Tuple&#xff09;概述二、元组的创建方式&#xff08;一&#xff09;使用 Tuple 类&#xff08;旧的方式&#xff0c;C# 7.0 之前常用&#xff09;&#xff08;二&#xff09;使用元组字面量&#xff08;C# 7.0 及之后引入的更便捷方式&#xff…

2024年Java面试八股文大全(附答案版)

很多人会问Java面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。 国内的互联网面试&#xff0c;恐怕是现存的、最接近科举考试的制度。 而且&#xff0c;我国的八股文确…

【数据库系列】Spring Boot如何配置Flyway的回调函数

Flyway 提供了回调机制&#xff0c;使您能够在特定的数据库迁移事件发生时执行自定义逻辑。通过实现 Flyway 的回调接口&#xff0c;可以在迁移前后执行操作&#xff0c;如记录日志、执行额外的 SQL 语句等。 1. 创建自定义回调类 要配置 Flyway 的回调函数&#xff0c;需要创…

Angular v19 (三):增量水合特性详解 - 什么是水合过程?有哪些应用场景?与 Qwik 相比谁更胜一筹?- 哪个技术好我就学哪个,这就是吸心大法吧

Angular在其最新版本 v19 中引入了增量水合&#xff08;Incremental Hydration&#xff09;这一特性。这一更新引发了开发者们广泛的讨论&#xff0c;特别是在优化首屏加载速度和改善用户体验方面。本文将详解水合过程的概念、增量水合的应用场景&#xff0c;以及它与类似框架如…

jmeter如何导出中文版的测试报告?

文章目录 0、初始步骤&#xff1a;把报告模板换成中文形式1、首先添加一份聚合报告2、然后点开【聚合报告】3&#xff0c;生成报告3.1 选择【工具】-【generate HTML report】3.2 【generate HTML report】参数详解3.3 、最后点击 【generate report】直接生成。 声明&#xff…

集团内买卖资产并以注资方式转实收资本

SAP 集团内资产买卖原值、折旧一起入账 合并是个很复杂的东西&#xff0c;我至今不会。 做项目过程中经历的上市公司&#xff0c;一般都要求内部公司间转移的固定资产不能有价格调整&#xff0c;也就是卖出方的账面价值需要等于买入方的账面价值。 当然&#xff0c;集团内也做…

【测试工具JMeter篇】JMeter性能测试入门级教程(七):JMeter断言

一、前言 在 JMeter 中&#xff0c;断言元件&#xff08;Assertion&#xff09;用于验证测试结果是否符合预期。断言元件可以检查服务器的响应数据&#xff0c;以确保它们符合期望的模式或值&#xff0c;从而验证性能测试脚本的正确性。断言元件通常在每个请求的响应中添加&am…

nerdctl:与 Docker 兼容的 containerd CLI

nerdctl 是一个用于容器管理的命令行工具&#xff0c;它旨在提供与 Docker CLI 相似的用户体验&#xff0c;但却是为 containerd 这样的低级容器运行时设计的。containerd 是一个行业标准的容器运行时&#xff0c;被广泛用作 Kubernetes 等容器编排平台的一部分。nerdctl 通过简…

XRP 深度解析:从技术到 Meme 币交易指南

撰文&#xff1a;Ignas | DeFi Research 编译&#xff1a;Yuliya&#xff0c;PANews 本文来源Techub News:XRP 深度解析&#xff1a;从技术到 Meme 币交易指南 在当前加密货币市场&#xff0c;一个令人瞩目的现象正在上演&#xff1a;XRP 在短短一个月内暴涨 3.5 倍&#xf…

java_判断语句——acwing

题目一&#xff1a;倍数 665. 倍数 - AcWing题库 代码 import java.util.Scanner;public class Main{public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt(), b sc.nextInt();if(a%b0 || b%a0) System.out.printf("Sao Mu…

构建自己的docker的ftp镜像

aarch64系统可运行的docker镜像 构建自己的vsftpd镜像&#xff0c;我是在windows系统下的docker desktop中构建运行于aarch64 GNU/Linux系统的ftp镜像。 系统环境&#xff1a; Welcome to Debian GNU/Linux with Linux x.x.x dockerfile FROM ubuntu:latestUSER rootRUN ap…

【LeetCode】169.多数元素

题目连接&#xff1a; https://leetcode.cn/problems/majority-element/solutions/2362000/169-duo-shu-yuan-su-mo-er-tou-piao-qing-ledrh/?envTypestudy-plan-v2&envIdtop-interview-150 题目描述&#xff1a; 思路一&#xff1a; 使用哈希表unordered_map记录每个元…

Ajax基础总结(思维导图+二维表)

一些话 刚开始学习Ajax的时候&#xff0c;感觉很模糊&#xff0c;但是好像学什么都是这样的&#xff0c;很正常&#xff0c;但是当你学习的时候要持续性敲代码&#xff0c;边敲代码其实就可以理解很多了。然后在最后的总结&#xff0c;其实做二维表之后&#xff0c;就可以区分…

structuredClone()与 lodash.cloneDeep与 JSON.parse JSON.stringify()拷贝对比

structuredClone()与 lodash.cloneDeep与 JSON.parse & JSON.stringify()拷贝对比

Vue02

前端最新Vue2Vue3基础入门到实战项目全套教程&#xff0c;自学前端vue就选黑马程序员&#xff0c;一套全通关&#xff01;_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1HV4y1a7n4?spm_id_from333.788.videopod.episodes&vd_source016213ecd945408976ff307a6bda30…

数据结构---图

图是一种较为复杂的非线性结构。 为啥说其较为复杂呢&#xff1f; 根据前面的内容&#xff0c;我们知道&#xff1a; 线性数据结构的元素满足唯一的线性关系&#xff0c;每个元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继。树形数据结构的元素之间有着明显的层次…

FakeLocation 1.3.5 BETA 提示校园跑漏洞修复解决

任务一 作者对此又进行了更新&#xff0c;在本次更新中&#xff0c;我们依旧使用hookvip进行破解 本次的更新&#xff0c;使得包名强制写入更加严重&#xff0c;之前靠一些方法已经无法阻止appconfigs.xml的文件的修改&#xff0c;而且使得验证加强&#xff0c;和云端加强&…

在Ubuntu 20.04和ROS中使用RViz进行数据可视化:详解Fixed Frame参数的选择与应用

在Ubuntu 20.04和ROS中使用RViz进行数据可视化&#xff1a;详解Fixed Frame参数的选择与应用 在ROS的可视化工具RViz中&#xff0c;“Fixed Frame"是一个关键的全局选项&#xff0c;它设置了一个参考坐标系&#xff0c;用于解释和显示所有其他坐标系中的数据。通过您提供的…

夜神模拟器+Charles+postern+Mgisk+TrustMeAlready实现抓包

[实测有用]夜神模拟器CharlesposternMgiskTrustMeAlready实现抓包 PS:此贴仅做为技术交流,禁止非法用途。 1.初始化条件 A.安装MUMU模拟器安卓12版本 B.按图示选择&#xff0c;设置好代理端口8889 C.查看本机IP地址 D.导出证书&#xff0c;安装配置&#xff0c;暂时保存…