IO流概述

本文介绍了流的概念、分类,包括输入/输出流、字节/字符流、节点/处理流。阐述了流用于读写广义设备数据。详细介绍了Java IO包中常用的读写文件的流类,如FileInputStream等,还提及装饰者、适配器设计模式,以及对象序列化、File类、IO与Properties的使用。

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

流是有起点和终点的有序字节序列的集合。

流的分类:

                输入流/输出流:以当前程序为参照,如果程序读取数据就是输入流,输出数据就是输出流。

                字节流/字符流:如果是以字节为单位处理流中的数据就是字节流,以字节为单位处理流中的数据就是字符流。

                节点流/处理流:如果直接从设备上读写数据就是节点流;处理流是对节点流的包装。

流的作用是读写设备上的数据,这儿的设备是广义的设备,可以是文件,可以是网络。

 

读写文件常用的IO流:

                                    

 

在java IO包中定义了相关的流类,以Stream为结尾的都是字节流,以Reader结尾的都是字符输入流,以Writer结尾的都是字符输出流。

1.FileInputStream/FileOutputStream

FileInputStream类用于以字节为单位读取文件中的数据。

FileOutputStream类用于以字节为单位输出文件到文件中

2.BufferedInputStream/BufferedOutputStream

字节缓存流是对其它字节流的包装。

3.DataInputStream/DataOutputStream

读写数据的时候可以带有数据格式

4.PrintStream

打印字节流

5.装饰者设计模式

设计模式,可以简单的理解为别人总结一套解决方案,这套解决方案被大多数人熟知与认可。

装饰者设计模式,对现有类的所有方法进行功能的扩展

在IO流中,所有Filter开头的流类都采用了装饰着设计模式。

6.ObjectInputStream/ObjectOutputStream

对象序列化:

ObjectInputStream把对象转换为01二进制序列

对象反序列化

ObjectOutputStream把01二进制序列转化为对象

注意:

        对象的序列化/反序列化的前提是,对象的类需要实现Serializable接口

一般情况下,实现序列化Serializable接口类,需要手动添加SerialVersionUID字段。

7.InputStreamReader/OutputStreamWriter

当文件的编码与当前环境编码不兼容时,使用转换流

InputStreamReader 把字节流以指定的编码转换为字符流

OutputStreamWriter 把字符流以指定的字节编码转换为字节流

他采用了适配器设计模式

8.BufferedReader/BufferedWriter

字符缓冲流,对字符流进行缓冲,默认有8192的字符大小缓冲区。

9.File类

读写文件的内容使用IO流相关的类,对文件/文件夹进行操作使用File类。

10.IO+Properties

经常把一些系统属性保存到配置文件中

经常单独创建一个包,在该包中添加配置文件,配置文件扩展名是.properties

可以使用Properties读取配置文件

也可以使用ResourceBoundle读取配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值