【Java编程】07_IO流

IO 流

1.概述

大多数应用程序都需要实现与设备之间的数据传输,例如键盘可以输入数据,显示器可以显示程序的运行结果等。在Java中,将这种通过不同输入输出设备(键盘,内存,显示器,网络等)之间的数据传输抽象表述为 “ 流 ” ,程序允许通过流的方式与输入输出设备进行数据传输
在这里插入图片描述
Java中的 “ 流 ” 都位于 java. io 包中,称为IO(输入输出)流。IO流有很多种:

  • 按照操作数据的不同,可以分为字节流和字符流。
  • 按照数据传输方向的不同又可分为输入流和输出流。

在这里插入图片描述

程序从输入流中读取数据,向输出流中写出数据。在IO包中

  • 字节流的输入输出流分别用 java.io. InputStream 和 java. io.OutputStream 表示。
  • 字符流的输入输出流分别用 java. io.Reader 和 java. io. Writer 表示。

9 总结:IO的继承结构

  1. 主流分类
    按照方向进行分类:输入流 输出流(相对于程序而言,从程序写数据到文件中是输出)
    按照传输类型进行分类:字节流 字符流
    组合: 字节输入流 字节输出流 字符输入流 字符输出流
  • 字节输入流:
    InputStream 抽象类,不能new,可以作为超类,学习其所提供的共性方法

FileInputStream 子类,操作文件的字节输入流,普通类
BufferedInputStream 子类,缓冲字节输入流,普通类

  1. 字符输入流
    Reader 抽象类,不能new,可以作为超类,学习其所提供的共性方法

FileReader,子类,操作文件的字符输入流,普通类
BufferedReader,子类,缓冲字符输入流,普通类1

  1. 字节输出流:
    OutputStream 抽象类,不能new,可以作为超类,学习其所提供的共性方法

FileOutputStream 子类,操作文件的字节输出流,普通类
BufferedOutputStream 子类,缓冲字节输出流,普通类

  1. 字符输出流
    Writer 抽象类,不能new,可以作为超类,学习其所提供的共性方法

FileWriter,子类,操作文件的字符输出流,普通类
BufferedWriter,子类,缓冲字符输出流,普通类

序列化与反序列化

概述

程序运行时,会在内存中创建多个对象,然而程序结束后,这些对象便被当作垃圾回收了。如果希望永久保存这些对象,则可以将对象转为字节数据写入到硬盘上,这个过程称为对象序列化。为此JDK中提供了ObjectOutputStream(对象输出流)来实现对象的序列化。当对象进行序列化时,必须保证该对象实现Serializable接口,否则程序会出现NotSerializableException异常。
序列化是指将对象的状态信息转换为可以存储或传输形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后可以通过从存储区中读取或者反序列化对象的状态,重新创建该对象
序列化:利用ObjectOutputStream,把对象的信息,按照固定的格式转成一串字节值输出并持久保存到磁盘。
反序列化:利用ObjectInputStream,读取磁盘中之前序列化好的数据,重新恢复成对象。
在这里插入图片描述
IO流详解

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值