本章内容
IO介绍---input、output--->输入输出流
File
字节流--->流动的是数据,在计算机当中存储为字节
字符流--->我们直接操作的是字符(有组件帮助我们进行字节流和字符流的管理)
CommonsIO
后期开发过程中更多的关注功能(将客户的需求转成代码)而不是技术(技术上是架构师去做的,一步一步来)
IO介绍
IO简介:
-
io是指input、output,流是一个抽象的(abstract)概念
-
从一端移动到另一端。--->一端指:程序。另一端指:数据源(data source)(文件、数据库、网络...存储数据介质的地方)--->源头和程序之间的管道称之为:IO流
-
流是一个抽象、动态的概念,是一连串动态的数据集合
流是一个流动的概念,这就涉及到数据源与程序的交互
什么是数据源(data source)
提供原始数据的原始媒介
常见的数据源:
-
数据库
-
文件
-
其他程序
-
内存
-
网络连接
-
IO设备
...
数据与程序交互的方式---字节流
特点:
-
一切以程序为中心
-
进入程序称为输入流---读进来
-
离开程序称为输出流---写出去
-
-
Java程序中对数据的输入/输出操作以"流"(stream)方式进行
-
J2SDK提供了各种各样的"流"类,用以获取不同种类的数据,程序中通过标准的方法输入或输出数据
-
Java的流类型一致位于java.io包中
-
核心类
File类--->数据源
文件类--->文件存储到操作系统的硬盘中
InputStream类
字节输入流
OutputStream类
字节输出流
Reader类
字符输入流
Writer类
字符输出流
Closeable接口--->Java告知操作系统释放资源
关闭流接口
Flushable接口--->Java告知操作系统强制刷新--->避免数据滞留在管道中
刷新流接口
Serializable接口--->Java为了便于对象存储到文件中,存储对象称之为序列化--->还原对象称为反序列化
序列化接口
最核心的五类三接口
实际上只需要把程序对接起来就可以实现读内容、写内容的即实现了文件的拷贝--->上传和下载文件--->根据流向来分输入输出流
按功能分读写
直接操作数据源---节点流(存储节点、网络节点---数据源)
可以直接从数据源或目的地读写数据---后台服务
在节点流之上为了提高效率、提升性能---包装流(设计模式当中称之为装饰设计模式)
不直接连接到数据源或目的地,是其他流进行封装。起到简化操作和提高性能的作用
节点流和处理流的关系
-
节点流处于io操作的第一线,所有操作必须通过他们进行
-
处理流可以对其他流进行处理(提高效率或操作灵活性)
按方向
输入流、输出流
按功能
节点流、处理流
按数据
字节流(字节操作字节)、字符流(操作纯文本的)
-
字节流:input、output
-
字符流:reader、writer ---> 底层原理还是字节流,自动搜寻了指定的码表(字符集表)
-
人们根据二进制翻译而来的大量的字符集
-
字符集是对应的,读的时候是什么字符集写的时候也要是什么字符集,不然计算机底层识别不出来就会出现乱码
-
-