1-38 流资源类结构

一 简介

1. Java中所说的流资源--IO流

2.为什么学习留资源? --要操作文件中的数据

 将数据写入指定的文件

 将数据从指定的文件读取

3.分类 -- 四大基流 , 八大子流 (重点)

 按照流向分 : 输入流 和输出流

 按照操作数据资源的类型划分

 字符流 (重点)

 Reader -- 字符输入流

  FileReader / BufferedReader

 Writer -- 字符输出流

 FileWriter / BufferedWriter

 字节流

 InputStream -- 字节输入流

 FileInputStream / BufferedInputStream

 OutputStream -- 字节输出流

 FileInputStream / BufferedInputStream

 子流类名 , 前缀表示该子流 操作的是什么 (File 文件 Buffered 缓存区) 后缀表示该子流属于那种流资源

 四大基流 都是抽象类 , 只用来参考 , 具体的实操需要通过子流完成

 字符流 -- 字符输出流系列 -- Writer这一体系

二 具体

1.Writer类设计

2.FileWriter类设计

3.常用方法

使用这种方式创建对象 如果没有直接创建 , 如果有 覆盖

 总结 : 适用于所有的IO流操作

 1 将对象声明写在 try块 外, 并赋值 null

 2 在try块中实例化对象 , 并编写操作数据资源的代码

 3 在finally中 编写关闭资源的代码 , 要先进行判空

 想要换行 怎么办

BufferWriter

①类设计

②常用方法 ---与Writer类同名的方法 用法一致

 

 Reader -- FileReader/BufferedReader

 中文解析 , 可能乱码 : 文件的编码集 与 系统的编码集 不一致 

 读一个的方法 是通过 计算机底层 游标指针 频繁在 文件和指定显示区域 之间移动  , 对内存资源消耗大 , 将所有的数据先读取到临时存储区域 ,  将区域中的内容整体显示 --读一组的方法

 上述代码 虽然降低了内存资源的消耗 , 但是定时字符数组 , 长度不好确定, 一旦过大 浪费内存空间 Java -- BufferedReader

 

 流总结

 在流中都定义操作数据的多种方法 

 Writer系列 (append(char c) write(int ch)) 写一堆 (write(String data) write(char[] ))

 Reader 系列 读一个 read() 读一堆 read(char[] /readLine())

 无论调用的是哪一种 , 实质上 调用计算机底层的 读一个或写一个

 字节流

 1 OutputStream -- 字节输出流

 FileOutputStream/BufferedOutputStream

 FileOutputStream 用来实例化对象

 上述代码既没有刷新 , 也没有 关闭资源 ,但是数据写入了

 计算机底层操作的是字节数据 , 流正好是字节流 , 可以直接将数据写入

 上述代码不能直接将数据写入 操作的是缓存区 因此需要将数据资源刷新到指定的文件中 , 实际开发中如果 真的 使用字节流 , 建议使用 BufferedOutputStream , 可以降低内存资源的消耗

 InputStream 字节输入流

 FileInputStream/BufferedInputStream

 

 ② BufferedInputStream 类

 字节流高效流 ()带有Buffered缓存技术的流 , 并没有像 字符高效流那样 , 提供高效方法 (newLine readLine)

 定义高效流原因 ,操作缓存区 来代替 直接操作计算机底层 , 降低系统消耗, 

 补充流

 1 转换流 

 InputStreamReader 将字节转化为字符

 OutputStreamWriter 将字符转换字节

 实际开发中用的少 替代体

 System.in

 System.out.print

 2 序列化和反序列化

 ① 序列化 : 使用指定的技术 将对象的数据存储在 指定的文件或通过网络上传的过程

 ② 反序列化 : 将指定的文件 或 网络上的对象中的数据 获取到

 ObjectOutputStream

 ObjectInputStream

 

 序列化 操作

上传数据 ,将数据以字节码的形式存储在文件中 

反序列化之后就能看懂了

 注意 ! ! !

 在类序列化过程中 , 如果添加了新的属性 

 修改对象之后 要进行一次序列化 , 避免反序列出现问题

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值