当前位置: 首页 > news >正文

JAVA深化篇_26——Apache commons-io工具包的使用

Apache commons-io工具包的使用

Apache基金会介绍

Apache软件基金会(也就是Apache Software Foundation,简称为ASF),是专门为支持开源软件项目而办的一个非盈利性组织。在它所支持的Apache项目与子项目中,所发行的软件产品都遵循Apache许可证(Apache License)。 官方网址为:www.apache.org 。

很多著名的Java开源项目都来源于这个组织。比如:commons、kafka、lucene、maven、shiro、struts等技术,以及大数据技术中的:hadoop(大数据第一技术)、hbase、spark、storm、mahout等。

commons-io工具包

Apache的commons-io工具包中提供了IOUtils/FileUtils,为我们提供了更加简单、功能更加强大的文件操作和IO流操作功能。非常值得大家学习和使用。

下载与添加commons-io包

1.下载地址

https://commons.apache.org/proper/commons-io/download_io.cgi

2.添加jar包

FileUtils类中常用方法的介绍

打开FileUtils的api文档,我们抽出一些工作中比较常用的方法,进行总结和讲解。总结如下:

方法名使用说明
cleanDirectory清空目录,但不删除目录
contentEquals比较两个文件的内容是否相同
copyDirectory将一个目录内容拷贝到另一个目录。可以通过FileFilter过滤需要拷贝的文件
copyFile将一个文件拷贝到一个新的地址
copyFileToDirectory将一个文件拷贝到某个目录下
copyInputStreamToFile将一个输入流中的内容拷贝到某个文件
deleteDirectory删除目录
deleteQuietly删除文件
listFiles列出指定目录下的所有文件
openInputSteam打开指定文件的输入流
readFileToString将文件内容作为字符串返回
readLines将文件内容按行返回到一个字符串数组中
size返回文件或目录的大小
write将字符串内容直接写到文件中
writeByteArrayToFile将字节数组内容写到文件中
writeLines将容器中的元素的toString方法返回的内容依次写入文件中
writeStringToFile将字符串内容写到文件中

读取文件内容,并输出到控制台上(只需一行代码!)

import java.io.File;
import org.apache.commons.io.FileUtils;
public class TestUtils1 {public static void main(String[] args) throws Exception {String content = FileUtils.readFileToString(new File("d:/a.txt"), "gbk");System.out.println(content);}
}

使用FileUtils工具类实现目录拷贝

我们可以使用FileUtils完成目录拷贝,在拷贝过程中可以通过文件过滤器(FileFilter)选择拷贝内容。

import java.io.File;
import java.io.FileFilter;
import org.apache.commons.io.FileUtils;public class TestFileUtilsDemo2 {public static void main(String[] args) throws Exception {FileUtils.copyDirectory(new File("d:/aaa"), new File("d:/bbb"), new FileFilter() {@Overridepublic boolean accept(File pathname) {// 使用FileFilter过滤目录和以html结尾的文件if (pathname.isDirectory() || pathname.getName().endsWith("html")) {return true;} else {return false;}}});}
}

IOUtils的妙用

打开IOUtils的api文档,我们发现它的方法大部分都是重载的。所以,我们理解它的方法并不是难事。因此,对于方法的用法总结如下:

方法名使用说明
buffer将传入的流进行包装,变成缓冲流。并可以通过参数指定缓冲大小
closeQueitly关闭流
contentEquals比较两个流中的内容是否一致
copy将输入流中的内容拷贝到输出流中,并可以指定字符编码
copyLarge将输入流中的内容拷贝到输出流中,适合大于2G内容的拷贝
lineIterator返回可以迭代每一行内容的迭代器
read将输入流中的部分内容读入到字节数组中
readFully将输入流中的所有内容读入到字节数组中
readLine读入输入流内容中的一行
toBufferedInputStream,toBufferedReader将输入转为带缓存的输入流
toByteArray,toCharArray将输入流的内容转为字节数组、字符数组
toString将输入流或数组中的内容转化为字符串
write向流里面写入内容
writeLine向流里面写入一行内容

我们没有必要对每个方法做测试,只是演示一下读入d:/sxt.txt文件内容到程序中,并转成String对象,打印出来。

IOUtils的使用

import java.io.*;
import org.apache.commons.io.IOUtils;
public class TestIOUtilsDemo {public static void main(String[] args) throws Exception {String content = IOUtils.toString(new FileInputStream("d:/sxt.txt"),"utf-8");System.out.println(content);}
}
http://www.lryc.cn/news/217075.html

相关文章:

  • centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置
  • TrafficWatch 数据包嗅探器工具
  • MySQL Binlog实战应用之一
  • 【MySQL】MVCC机制(undo log,read view)
  • gma 2 教程(三)坐标参考系统:3.投影方法
  • 蓝桥杯每日一题2023.11.2
  • Leetcode67二进制求和
  • 线性代数 第五章 特征值与特征向量
  • Python嵌入式数据库 / 轻量级数据库 / 小型数据库介绍(SQLite、Pandas DataFrame、TinyDB)(python数据库)
  • USB PD v1.0快速充电通信原理
  • 【华为】路由器以PPPoE拨号接入广域网
  • Linux内核分析(一)--内核架构和子系统
  • 【PyQt学习篇 · ⑨】:QWidget -控件交互
  • 新版本IntelliJ IDEA(如2023)中运行Spring Boot找不到VM options进行端口的修改的问题解决
  • Swift语言配合HTTP写的一个爬虫程序
  • 【lvgl】linux开发板搭建环境
  • C之(10)CMocka-单元测试框架使用
  • 如何在idea中使用maven搭建tomcat环境
  • 单点登录
  • 大数据(十):数据可视化(二)
  • pytorch+LSTM实现使用单参数预测,以及多参数预测(代码注释版)
  • 腾讯云3年/5年特惠云服务器购买入口及攻略
  • 【Linux】jdk Tomcat MySql的安装及Linux后端接口部署
  • 天空卫士为集度智能汽车系上“安全带”
  • vue el-table-column 修改一整列的背景颜色
  • docker 安装 minio (单体架构)
  • docker搭建kafka
  • 给Nginx配置环境变量
  • CHS零壹视频恢复程序高级版视频修复OCR使用方法
  • android display 杂谈(三)WMS