一、前言

Apache Commons IO是Apache基金会创建并维护的Java函数库。

它提供了许多类使得开发者的常见任务变得简单,同时减少重复代码

二、Commons IO 类库

2.1 FileUtils 文件操作工具类

提供方法

  • 复制文件夹
  • 复制文件
  • 下载文件
  • 把字符串写入文件
  • 把字节数组写入文件
  • 把集合里面的内容写入文件
  • 往文件里面写内容
  • 文件移动
  • 清空和删除文件夹
  • 创建文件夹
  • 文件获取输入/输出流
  • 读取文件
  • 测试两个文件的修改时间那个比较新/老
  • 其他

2.2 IOUtils 流操作工具类(功能、方法、demo)

  • 2.2.1 功能:提供用于读取,写入和复制文件的实用方法。 这些方法适用于InputStream,OutputStream,Reader和Writer。

  • 2.2.2 方法

    ...为输入/输出操作提供静态实用程序方法。

  • toXXX() - 从流中读取数据。

  • write() - 将数据写入流。

  • copy() - 将所有数据复制到另一个流的流。

  • contentEquals - 比较两个流的内容。

  • 2.2.3 demo

     //方式1:使用缓冲读取器逐行读取文件
public static void readUsingTraditionalWay() throws IOException {
try(BufferedReader bufferReader =
new BufferedReader( new InputStreamReader(
new FileInputStream("data.txt") ) )) {
String line;
while(( line = bufferReader.readLine()) != null )
System.out.println( line );
}
//方式2:使用IOUtils一次读取文件
public static void readUsingIOUtils() throws IOException {
try(InputStream is = new FileInputStream("data.txt")) {
System.out.println(IOUtils.toString(is, "UTF-8") );
}
}

三、IO流总结

1、按流的划分

  • 输入流:数据源到程序(InputStream、Reader读进来)
  • 输出流:程序到目的地(OutPutStream、Writer写出去)

2、按流的处理的数据单元分类

  • 字节流:按照字节读取数据(InputStream、OutputStream)。
  • 字符流:按照字符读取数据(Reader、Writer)。

3、 按流的功能分类:

  • 节点流:可以直接从数据源或目的地读写数据。
  • 处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能

4、 IO的四个基本抽象类:

  • InputStream、OutputStream、Reader、Writer

5、InputStream的实现类:

  • FileInputStream
  • ByteArrayInutStream
  • BufferedInputStream
  • DataInputStream
  • ObjectInputStream

    ** 6、 OutputStream的实现类:**
  • FileOutputStream
  • ByteArrayOutputStream
  • BufferedOutputStream
  • DataOutputStream
  • ObjectOutputStream
  • PrintStream

7、 Reader的实现类

  • FileReader
  • BufferedReader
  • InputStreamReader

8、 Writer的实现类

  • FileWriter
  • BufferedWriter
  • OutputStreamWriter

9、 序列化

  • 把Java对象转换为字节序列的过程。

10、反序列化

  • 字节序列恢复为Java对象的过程。

Jakartase_IO流_ — Commons IO_(IO流终极篇)的更多相关文章

  1. 今天谈谈流,什么是IO流?

    无标题 (5) :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { bord ...

  2. JavaIO 流(1)IO流介绍

    IO流定义: 流的本质是一组单向有序,分起始和终止的数据传输过程.需要导入import java.io.* IO流分类: 按数据类型分为:字节流和字符流 字节流: 按字节进行读取(可以处理任意类型数据 ...

  3. 09、IO流—File类与IO流

    目录 一.File类 基本认识 实用方法 获取功能 重命名功能(包含剪切) 判断功能 创建.删除文件 实际小案例 二.IO流 1.认识IO流 2.IO流基类介绍 字节流基类介绍 字符流基类介绍 三.节 ...

  4. Java基础知识强化之IO流笔记42:IO流总结(图解)

    1. IO流总结(图解)

  5. Java基础知识强化之IO流笔记16:IO流的概述和分类

    1. IO流的分类   流向:     (1)输入流:读取数据到内存     (2)输出流:写入数据到硬盘(磁盘)   操作的数据类型:    (1)字节流:操作的数据是字节             ...

  6. java基础之io流总结一:io流概述

    IO流概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.io流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. IO流的分类: 根据处理数据类型的不同分为:字符流 ...

  7. java IO流 (二) IO流概述

    1.流的分类* 1.操作数据单位:字节流.字符流* 2.数据的流向:输入流.输出流* 3.流的角色:节点流.处理流 图示: 2.流的体系结构 说明:红框对应的是IO流中的4个抽象基类.蓝框的流需要大家 ...

  8. File类与常用IO流第三章IO流概述

    一:以内存为基准,按照数据的流动方向,流向内存为输入(读取数据),流出内存为输出.IO流有四大顶级父类: IO流四大顶级父类   输入流 输出流 字节流 字节输入流 InputStream 字节输出流 ...

  9. Java基础知识强化之IO流笔记45:IO流练习之 把集合中的数据存储到文本文件案例

    1. 把集合中的数据存储到文本文件案例:    需求:把ArrayList集合中的字符串数据存储到文本文件 ? (1)分析:通过题目的意思我们可以知道如下的一些内容,ArrayList集合里存储的是字 ...

随机推荐

  1. 基于官方Drone-CI 的alpine版本asia亚洲时区构建支持. Drone-CI based alpine Timezone Build

    基于官方Drone-CI 的alpine版本最简化添加亚洲时区Dockerfile构建支持. iotd@Github: drone-ci-based-alpine-timezone-build 如添加 ...

  2. springMVC入门(七)------RESTFul风格的支持

    简介 RESTful风格(Representational State Transfer),又叫表现层状态转移,是一种开发理念,也是对HTTP协议很好的诠释 主要理念是将互联网中的网页.数据.服务都视 ...

  3. OVS DPDK VXLAN隧道处理

    原文链接: OVS DPDK VXLAN隧道处理

  4. 牛客网PAT练兵场-德才论

    题解:用sort排序即可 题目地址:https://www.nowcoder.com/questionTerminal/97b6a49a85944650b2e3d0660b91c324 /** * C ...

  5. 【趣味设计模式系列】之【代理模式3--Cglib动态代理源码解析】

    1. 图解 上图主要描述了Cglib动态代理的主要执行过程,下面做详细分析,以下源码使用的Cglib版本为3.2.12. 2. Enhancer源码分析 public Object create() ...

  6. Java二进制和位运算,这一万字准能喂饱你

    基础不牢,地动山摇.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众号[BAT的乌托 ...

  7. js实现树级递归,通过js生成tree树形菜单(递归算法)

    方法封装: /** * 数据转换为树形(递归),示例:toTreeByRecursion(source, 'id', 'parentId', null, 'children') * @param {A ...

  8. win10下MinGW的安装与配置(详细步骤)

    一.安装mingw软件 1.进入官网 www.mingw.org 2.点击下载downloads 3.点击下载图标 4.点击install z 5.先选择安装的地址,再点击continue 6.等待相 ...

  9. 最佳实践:Pulsar 为批流处理提供融合存储

    非常荣幸有机会和大家分享一下 Apache Pulsar 怎样为批流处理提供融合的存储.希望今天的分享对做大数据处理的同学能有帮助和启发. 这次分享,主要分为四个部分: 介绍与其他消息系统相比, Ap ...

  10. 【Android】Android开发初学者实现拨打电话的功能,拨打电话app小demo实现

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193 新浪微博:http://weibo.com/mcxiaobing 首先先给大家看一下最终实现的效果: ...