共计 2828 个字符,预计需要花费 8 分钟才能阅读完成。
本文源码:GitHub·点这里 || GitEE·点这里
一、IO 流分类
1、分类角度
流的方向
- 输出流:从数据源中读取数据到利用中的流;
- 输入流:从利用中将数据写入到目的地的流;
流数据类型
- 字节流:以字节模式来读写的流,标识是名称以 Stream 结尾;
- 字符流:以字符模式来读写的流,标识是名称以 Writer、Reader 结尾;
- 管道流:以数据块为单位来解决,缓冲区就是用于读写的数据块;
流的角色
- 节点流:能够从一个节点或者向一个节点读 / 写数据的流,也被称为低级流;
- 解决流:对存在的流进行连贯或者封装、封装后的流来进行读 / 写、也被称为高级流。
2、API 体系
5 个外围类 ObjectOutputStream:File、OutputStream、InputStream、Writer、Reader;
1 要害接口:Serializable;
二、API 细节分类
1、字节输出流
InputStream:字节输出流是所有字节输出流的父类、为所有字节输出流提供一个规范、和根本的与读取字节无关的办法及简略的实现。
FileInputStream:文件字节输出流以字节的模式将文件中数据读取到利用中;
BufferedInputStream:缓冲字节输出流,提供缓冲性能,提高效率;
ByteArrayInputStream:字节数组输出流用于读取其内置缓存字节数组中的字节;
PipedInputStream:管道字节输出流必须与 PipedOutputStream 联合应用,用于线程之间的通信;
FilterInputStream:过滤器字节输出流,重写 InputStream 办法,为字节输出解决流提供扩大;
DataInputStream:数据字节输出流,个别与 DataOutputStream 联合应用;
ObjectInputStream:对象字节输出流,与 ObjectOutputStream 联合应用;
2、字节输入流
OutputStream:字节输入流,InputStream 作用一样,为所有字节输入流提供一个规范、定义了一些根本输入字节的办法与简略实现;
FileOutputStream:文件字节输入流,将字节写入指定指标的文件源中;
BufferedOutputStream:缓冲字节输入流,提供缓冲性能、提高效率;
ByteArrayOutputStream:字节数组输入流,将字节写入到其自身所带的一个内置缓存字节数组中;
PipedoutputStream:管道字节输入流,必须与 PipedInputStream 联合应用、用于线程之间的通信;
FilterOutputStream:过滤字节输入流,为字节输入解决流提供扩大;
DataOutputStream:数据字节输入流,个别与 DataInputStream 联合应用;
ObjectOutputStream:对象字节输入流,通常与 ObjectInputStream 联合应用;
PrintStream:字节打印流,字节输入流进行装璜、提供打印各种数据类型的性能;
3、字符输出流
Reader:字符输出流,为所有字符输出流提供一个规范、只有根本的读取办法的定义和简略的实现;
InputStreamReader:字节转换流,将字节流转换成字符流,并且能够指定字节转成字符时应用的编码;
BufferedReader:缓冲字符输出流,为字符输出流提供缓冲性能、提高效率;
CharArrayReader:字符数组输出流,将其内置字符缓存数组中的数据读取到利用中;
PipedReader:管道字符输出流,与 PipedWriter 联合应用、用于线程之间的通信;
FilterReader:过滤字符输出流,为字符输出流提供扩大;
FileReader:文件字符输出流,字符的模式读取文件中的内容;
4、字符输入流
Writer:字符输入流,所有字符输入流提供一个规范,根本写入的办法和简略的实现;
OutputStreamWriter:字节输入转换流,用于将字节输入流转化成字符输入流。能够指定编码转化;
BufferedWriter:缓存字符输入流,提供缓冲性能、提高效率;
CharArrayWriter:字符输入流,用于将字符写入其内置缓存字符数组中;
PipedWriter:管道字符输入流,与 PipedReader 联合应用,用于线程之间的通信;
FileWriter:文件字符输入流,用于将字符写入到指定文件中;
PrintWriter:字符打印流,将各种数据以字符的模式打印;
三、File 文件类
1、构造方法
File(String pathname):指定文件或者文件夹的门路创立一个 File 文件;
File(File parent,String child):依据 parent 形象路径名和 child 路径名字符创立新的 File 实例;
2、门路问题
绝对路径:该文件在硬盘上的残缺门路。绝对路径个别都是以盘符结尾的。
相对路径: 相对路径就是资源文件绝对于以后程序所在的门路。
. 以后门路
.. 上一级门路
3、文件的创立
createNewFile():在指定地位创立一个空文件,胜利返回 true,已存在就不创立而后返回 false;
mkdir():在指定地位创立目录,这只会创立最初一级目录,下级目录不存在就抛异样;
mkdirs():在指定地位创立目录,这会创立门路中所有不存在的目录;
4、删除文件
delete() 删除文件或者一个空的文件夹,如果文件夹且不为空,则不能删除,胜利返回 true,失败返回 false;
5、判断办法
exists():文件或文件夹是否存在;
isFile():是否是一个文件,如果不存在,则始终为 false;
isDirectory():是否是一个目录,如果不存在,则始终是 false;
6、获取文件信息
getName():获取文件或文件夹名称,不蕴含下级门路;
getPath():返回绝对路径,能够是相对路径,然而目录要指定
四、编码解码
字节流读取的是文件中的二进制数据,不会主动转为能够看懂的字符;字符流:把读到的数据进行对应的编码与解码。
五、源代码地址
GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile
举荐浏览:编程体系整顿
项目名称 |
---|
【Java 形容设计模式, 算法, 数据结构】GitHub==GitEE |
【Java 根底、并发、面向对象、Web 开发】GitHub==GitEE |
【SpringCloud 微服务根底组件案例详解】GitHub==GitEE |
【SpringCloud 微服务架构实战综合案例】GitHub==GitEE |
【SpringBoot 框架根底利用入门到进阶】GitHub==GitEE |
【SpringBoot 框架整合开发罕用中间件】GitHub==GitEE |
【数据管理、分布式、架构设计根底案例】GitHub==GitEE |
【大数据系列、存储、组件、计算等框架】GitHub==GitEE |