我的JAVA学习(6)——IO流总结、思维导图

本文总结了JAVA的IO流,包括流的分类、常用流的描述、四大基本抽象类InputStream、OutputStream、Reader、Writer的实现及方法,还介绍了File类的使用、序列化与反序列化,并给出了学习思维导图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IO流学习总结

一、流的分类

按流的方向分类:
输入流:数据源到程序(InputStream、Reader 读进来)。
输出流:程序到目的地(OutPutStream、Writer 写出去)。

按流的处理数据单元分类:
字节流:按照字节读取数据(InputStream、OutputStream)。
字符流:按照字符读取数据(Reader、Writer)。

按流的功能分类:
节点流:可以直接从数据源或目的地读写数据。
处理流:不直接连接到数据源或目的地,是处理流的流。通过对其他流的处理提高程序的性能。

二、常用流的描述
文件字节流:以字节的形式读写文件
文件字符流:以字符的形式读写文件
缓冲字节流:为字节流增加缓冲,提高文件的读取速度
字节数组流:读写内容,返回byte[]数组
数据流:对文件读写各种类型的数据
转换流:字节流与字符流之间的转换,主要是字节流转为字符流
对象流:对文件进行对象的读写

三、IO流相关类
四大基本抽象类InputStream、OutputStream、Reader、Writer

3.1InputStream类
实现类:
 FileInputStream
 ByteArrayInutStream
 BufferedInputStream
 DataInputStream
 ObjectInputStream

此抽象类是表示字节输入流的所有类的父类。InputSteam 是一个抽象类,它不可以实例化。 数据的读取需要由它的子类来实现。根据节点的不同,它派生了不同的节点流子类 。
继承自 InputSteam 的流都是用于向程序中输入数据,且数据的单位为字节(8 bit)。

常用方法:
int read():读取一个字节的数据,并将字节的值作为 int 类型返回(0-255 之间的一个值)。如果未读出字节则返回-1(返回值为-1 表示读取结束)。
void close():关闭输入流对象,释放相关系统资源。

3.2OutputStream类
实现类:
 FileOutputStream
 ByteArrayOutputStream
 BufferedOutputStream
 DataOutputStream
 ObjectOutputStream
 PrintStream

此抽象类是表示字节输出流的所有类的父类。输出流接收输出字节并将这些字节发送到某个目的地。

常用方法:
void write(int n):向目的地中写入一个字节。
void close():关闭输出流对象,释放相关系统资源。

3.3Reader类
实现类:
 FileReader
 BufferedReader
 InputStreamReader

Reader 用于读取的字符流抽象类,数据单位为字符。

常用方法:
int read(): 读取一个字符的数据,并将字符的值作为 int 类型返回(0-65535 之间的一个值,即 Unicode 值)。如果未读出字符则返回-1(返回值为-1 表示读取结束)。
void close() : 关闭流对象,释放相关系统资源。

3.4Writer类
实现类:
 FileWriter
 BufferedWriter
 OutputStreamWriter

Writer 用于输出的字符流抽象类,数据单位为字符。

常用方法:
void write(int n): 向输出流中写入一个字符。
void close() : 关闭输出流对象,释放相关系统资源。

四、File类使用
作用:File 类是 Java 提供的针对磁盘中的文件或目录转换对象的包装类。一个 File 对象而可以代表一个文件或目录,File 对象可以实现获取文件和目录属性等功能,可以实现对文件和目录的创建,删除等功能。

针对文件的操作方法:
createNewFile():创建新文件。
delete():直接从磁盘上删除
exists():查询磁盘中的文件是否存在
getAbsolutePath():获取绝对路径
getPath():获取相对路径
getName():获取文件名 相当于调用了一个 toString 方法。
isFile():判断是否是文件
length():查看文件中的字节数
isHidden():测试文件是否被这个抽象路径名是一个隐藏文件。

针对目录的操作方法:
exists():查询目录是否存在
isDirectory():判断当前路径是否为目录
mkdir():创建目录
getParentFile():获取当前目录的父级目录。
list():返回一个字符串数组,包含目录中的文件和目录的路径名。
listFiles():返回一个 File 数组,表示用此抽象路径名表示的目录中的文件。

五、序列化与反序列化
把 Java 对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为 Java 对象的过程称为对象的反序列化

ObjectOutputStream 代表对象输出流,它的 writeObject(Object obj)方法可对参数指定的obj 对象进行序列化,把得到的字节序列写到一个目标输出流中。

ObjectInputStream 代表对象输入流,它的 readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。

只有实现了 Serializable 接口的类的对象才能被序列化。Serializable 接口是一个空接口,只起到标记作用。

六、思维导图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值