乐趣区

关于java:编程体系结构04JavaIO流文件管理

本文源码: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
退出移动版