编程体系结构(04):JavaIO流文件管理

本文源码:GitHub·点这里 || GitEE·点这里java

1、IO流分类

一、分类角度git

流的方向github

  • 输入流:从数据源中读取数据到应用中的流;
  • 输出流:从应用中将数据写入到目的地的流;

流数据类型算法

  • 字节流:以字节形式来读写的流,标识是名称以Stream结尾;
  • 字符流:以字符形式来读写的流,标识是名称以Writer、Reader结尾;
  • 管道流:以数据块为单位来处理,缓冲区就是用于读写的数据块;

流的角色spring

  • 节点流:能够从一个节点或者向一个节点读/写数据的流,也被称为低级流;
  • 处理流:对存在的流进行链接或者封装、封装后的流来进行读/写、也被称为高级流。

二、API体系编程

5个核心类ObjectOutputStream:File、OutputStream、InputStream、Writer、Reader;设计模式

1关键接口:Serializable;api

2、API细节分类

一、字节输入流数组

InputStream:字节输入流是全部字节输入流的父类、为全部字节输入流提供一个标准、和基本的与读取字节有关的方法及简单的实现。缓存

FileInputStream:文件字节输入流以字节的形式将文件中数据读取到应用中;

BufferedInputStream:缓冲字节输入流,提供缓冲功能,提升效率;

ByteArrayInputStream:字节数组输入流用于读取其内置缓存字节数组中的字节;

PipedInputStream:管道字节输入流必须与PipedOutputStream结合使用,用于线程之间的通讯;

FilterInputStream:过滤器字节输入流,重写InputStream方法,为字节输入处理流提供扩展;

DataInputStream:数据字节输入流,通常与DataOutputStream结合使用;

ObjectInputStream:对象字节输入流,与ObjectOutputStream结合使用;

二、字节输出流

OutputStream:字节输出流,InputStream做用同样,为全部字节输出流提供一个标准、定义了一些基本输出字节的方法与简单实现;

FileOutputStream:文件字节输出流,将字节写入指定目标的文件源中;

BufferedOutputStream:缓冲字节输出流,提供缓冲功能、提升效率;

ByteArrayOutputStream:字节数组输出流,将字节写入到其自己所带的一个内置缓存字节数组中;

PipedoutputStream:管道字节输出流,必须与PipedInputStream结合使用、用于线程之间的通讯;

FilterOutputStream:过滤字节输出流,为字节输出处理流提供扩展;

DataOutputStream: 数据字节输出流,通常与DataInputStream结合使用;

ObjectOutputStream:对象字节输出流,一般与ObjectInputStream结合使用;

PrintStream:字节打印流,字节输出流进行装饰、提供打印各类数据类型的功能;

三、字符输入流

Reader:字符输入流,为全部字符输入流提供一个标准、只有基本的读取方法的定义和简单的实现;

InputStreamReader:字节转换流,将字节流转换成字符流,而且能够指定字节转成字符时使用的编码;

BufferedReader:缓冲字符输入流,为字符输入流提供缓冲功能、提升效率;

CharArrayReader:字符数组输入流,将其内置字符缓存数组中的数据读取到应用中;

PipedReader:管道字符输入流,与PipedWriter结合使用、用于线程之间的通讯;

FilterReader:过滤字符输入流,为字符输入流提供扩展;

FileReader:文件字符输入流,字符的形式读取文件中的内容;

四、字符输出流

Writer:字符输出流,全部字符输出流提供一个标准,基本写入的方法和简单的实现;

OutputStreamWriter:字节输出转换流,用于将字节输出流转化成字符输出流。能够指定编码转化;

BufferedWriter:缓存字符输出流,提供缓冲功能、提升效率;

CharArrayWriter:字符输出流,用于将字符写入其内置缓存字符数组中;

PipedWriter:管道字符输出流,与PipedReader结合使用,用于线程之间的通讯;

FileWriter:文件字符输出流,用于将字符写入到指定文件中;

PrintWriter:字符打印流,将各类数据以字符的形式打印;

3、File文件类

一、构造方法

File(String pathname):指定文件或者文件夹的路径建立一个File文件;

File(File parent,String child):根据parent抽象路径名和child路径名字符建立新的File实例;

二、路径问题

绝对路径:该文件在硬盘上的完整路径。绝对路径通常都是以盘符开头的。

相对路径: 相对路径就是资源文件相对于当前程序所在的路径。

. 当前路径

.. 上一级路径

三、文件的建立

createNewFile():在指定位置建立一个空文件,成功返回true,已存在就不建立而后返回false;

mkdir():在指定位置建立目录,这只会建立最后一级目录,上级目录不存在就抛异常;

mkdirs():在指定位置建立目录,这会建立路径中全部不存在的目录;

四、删除文件

delete() 删除文件或者一个空的文件夹,若是文件夹且不为空,则不能删除,成功返回true,失败返回false;

五、判断方法

exists():文件或文件夹是否存在;

isFile():是不是一个文件,若是不存在,则始终为false;

isDirectory():是不是一个目录,若是不存在,则始终是false;

六、获取文件信息

getName():获取文件或文件夹名称,不包含上级路径;

getPath():返回绝对路径,能够是相对路径,可是目录要指定

4、编码解码

字节流读取的是文件中的二进制数据,不会自动转为能够看懂的字符;字符流:把读到的数据进行对应的编码与解码。

5、源代码地址

GitHub·地址
https://github.com/cicadasmile
GitEE·地址
https://gitee.com/cicadasmile

推荐阅读:编程体系整理

序号 项目名称 GitHub地址 GitEE地址 推荐指数
01 Java描述设计模式,算法,数据结构 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
02 Java基础、并发、面向对象、Web开发 GitHub·点这里 GitEE·点这里 ☆☆☆☆
03 SpringCloud微服务基础组件案例详解 GitHub·点这里 GitEE·点这里 ☆☆☆
04 SpringCloud微服务架构实战综合案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
05 SpringBoot框架基础应用入门到进阶 GitHub·点这里 GitEE·点这里 ☆☆☆☆
06 SpringBoot框架整合开发经常使用中间件 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
07 数据管理、分布式、架构设计基础案例 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
08 大数据系列、存储、组件、计算等框架 GitHub·点这里 GitEE·点这里 ☆☆☆☆☆
相关文章
相关标签/搜索