IO流、字节流、字符流、转换流

本文深入解析了Java中的IO流概念,包括字节流和字符流两大类。字节流适用于所有类型的文件读写,涵盖FileInputStream、FileOutputStream、Buffered、Object及Data流的使用方法。字符流则专为文本数据设计,探讨了FileReader、FileWriter、BufferedReader和BufferedWriter的功能。同时,文章介绍了如何通过转换流实现字节流到字符流的转换。

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

IO流

一、字节流

字节流:可以读写所有类型的文件

1、InputStream 字节输入

​ 一、FileInputStream 节点流输入

​ 1、read()输入|读取

​ 2、close()关闭流。 注意使用完流需要关闭流,遵守后开先关顺序

2、OutputStream 字节输出

​ 一、FileOutStream 节点流输出

​ 1、writec()输出|写入

​ 2、flush()刷出。清理有可能留在流通道的字节

​ 3、close()关闭流

3、字节缓存流Buffered

可以提高执行效率,推荐使用;

​ 一、BufferedInputStream 缓存输入流

​ 二、BufferedOutputStream 缓存输出流

//子类有没有新增方法可以使用多态创建
InputStream is=new BufferedInputStream(new FileInputStream("目标路径"));//创建缓存输入流对象

OutputStream os=new BufferedOutputStream(new FileOutputStream("目标路径"))//创建缓存输出流对象

4、字节对象流Object

支持的数据类型有:基本数据类型+字符串、对象类型:把对象序列化进行存储或者传输

一、ObjectOutputStream 序列化输出

二、ObjectInputStream 反序列化输入 (先序列化再反序列化)

三、被序列化的类需要实现 Serializable 接口。父类实现此接口,子类都可以序列化。子类实现只有子类可以序列化

四、类中不想被序列化的属性可以用 transient 修饰、static修饰的内容也不会被序列化

五、该子类有新增方法: writeObject() 对象输出 | readObject()对象输入,不能使用多态创建对象,不然不能用子类方法

//对象输入
ObjectInputStream is=new ObjectInputStream(new FileInputStream("目标路径"));
//对象输出
ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("目标路径"));

5、字节基本数据流Data

一、DataInputStream 输入

​ 二、DataOutputStream 输出 (先输出再输入才可以正常使用)

​ 三、新增方法:readInt()、readUTF()、writeInt()、writeUTF()…等带类型的输入输入输出方法

//先输出
DataOutputStream os=new DataOutputStream(new FileOutputStream("目标地址"));
//在输入
DataInputStream is=new DataInputStream(new FileInputStream("目标地址"));

二、字符流

自能用于操作文本数据

1、Reader字符输入流

​ 一、FileReader

//1.多态创建
Reader is=new FileReader();
//2.普通创建
FileReader is=new FileReader();

2、Writer字符输出流

​ 一、FileWriter

//1.多态创建
Reader os=new FileWriter();
//2.普通创建
FileWriter is=new FileWriter();

3、字符缓存流

​ 一、BufferedReader 字符输入缓存流

​ 二、BufferedWriter 字符输出缓存流

​ 三、新增方法:readLine()、newLine()

//字符输入缓存流
BufferedReader is=new BufferedReader(new FileReader("目标地址"))
    is.readLine(); //读行
	is.newLine();//换行
//字符输出缓存流
BufferedReader os=new BufferedWriter(new FileWriher("目标地址"))

三、转换流

1、转换流的实现

//一、输入流
//1.字节输入流→字符输入流
	InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"));
//2.字节输入流 → 字符输入流 → 缓冲字符输入流
	BufferedReader isr=new BufferedReader(new InputStreamReader
		(new FileInputStream("")));
//二、输出流
//1.字节输出流 → 字符输出流
	OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("a.txt"));
//2.字节输出流 → 字符输出流 → 缓冲字符输出流
	BufferedWriter osw1=new BufferedWriter(new OutputStreamWriter
		(new FileOutputStream("a.txt")));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值