Java基础篇--IO流简介

本文深入讲解IO流的概念、分类及应用,包括输入/输出流、字节流与字符流、节点流与过滤流,以及常用流如FileReader、FileWriter、BufferedReader等的使用方法,探讨字符编码问题和对象序列化。

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

IO流

输入/输出时指应用程序与外围设备及其他计算机进行数据交换的操作,如读/写硬盘数据、向显示器输入数据、通过网络读取其他节点的数据等。简单而言:流就是内存与存储设备之间传输数据的通道、管道。

以三种不同的分类方式分类如下:

按方向(以JVM虚拟机为参照物)

输入流:将<存储设备>中的内容读入到<内存>中
输出流:将<内存>中的内容读入到<存储设备>中

按单位

字节流:以字节为单位,可以操作所有类型的文件。
字符流:以字符为单位,只能操作文本类型的文件。(.txt,.java,.html,.xml)

按功能

节点流:完成数据读写
过滤流:为其他流增强功能(节点流是枪,用来打敌人,过滤流就是瞄准镜,更好地对付敌人,辅助枪使用。)

使用流四步:
1、创建节点流
2、包装过滤流
3、读写数据
4、关闭流(最外层)

常用的流
在这里插入图片描述


数据源类型:
1、纯文本数据源:FileReader、FileWriter
2、非纯文本数据源:InputStream、OutputStream
3、byte[]数据源:ByteArrayInputStream、ByteArrayOutputStream
4、char[]数据源:CharArrayReader、CharArrayWriter
5、String[]数据源:StringReader、StringWriter
6、网络数据流:InputStream、OutputStream、Reader、Writer

格式化打印:
1、字节输出:PrintStream
2、字符输出:PrintWriter

缓冲:
1、字节缓冲:BufferedInputStream、BufferedOutputStream(flush()清空输出缓冲区)
2、字符流缓冲:BufferedReader、BufferedWriter

其他:
1、字节流转换为字符流(桥转换):InputStreamReader、OutputStreamWriter
2、进程间通信:PipedInputStream、PipedOutputStream、pipedReader、PipedWriter
3、读写对象:ObjectOutputStream、ObjectInputStream
4、zip压缩流:ZipOutputStream、ZipInputStream


**字符的编码**:字符的编码方式和解码方式不统一,可能造成乱码问题 ASCII 美国 ISO-8859-1 西欧 GB2312 简体中文 GBK 简体中文 Big5 繁体中文 Unicode 全球统一 UTF-16、UTF-8(变长)

ObjectOutputStream/ObjectInputStream–读写对象(过滤流)
通过流传输对象:对象序列化只有实现(implements)了Serializable接口的对象才能序列化.
transient修饰符:修饰的属性为临时属性,不参与对象序列化。
读对象时用try-catch捕获EOFException结束读文件。
反序列化过程中,这个类未实现序列化,则反序列化通过构造方法。如果这个类实现了序列化,则重建对象靠的是序列化规则,不调构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值