Java之BufferedInputStream

本文详细介绍了Java中的BufferedInputStream,包括缓冲区的操作和提高效率的原理。同时,讲解了字符流的概念,以Reader和Writer为父类的字符流如何与字节流配合,特别是转换流InputStreamReader和OutputStreamWriter在字节流与字符流之间的转换作用。此外,还讨论了文件缓冲流的读取、对象输入流的反序列化等应用场景。
摘要由CSDN通过智能技术生成

1、缓冲流的缓冲区操作
将缓冲流连接在文件流可以提高效率,缓冲流实际上本质就是进行块读写,无论我们是使用缓冲流进行何种读写方式,最终都会被缓冲流转换为快读写形式通过文件流进行实际操作。
缓冲流内部维护了一个8K的字节流,用于块读写操作。
BufferedInputStream:输入缓冲流;
BufferedOutputStream:输出缓冲流
缓冲流提供了一个强制写出数据的方法:flush();

//文件输出流
FileOutputStream fos = new FileOutputStream("bos.txt",true);
//文件输出缓冲流
BufferedOutputStream bos = new BufferedOutputStream(fos);
String str = "人非要经历一番不同平时的劫难才能脱胎换骨,成为真正能解决问题的人";
byte[] bytes = str.getBytes("UTF-8");
bos.write(bytes);
bos.flush();//强制将当前缓冲区数据写出
bos.close();//缓冲close()时会调用flush()

2、字符流
java将流按照读写单位划分为字节流和字符流
InputStream和OutputStream是所有字节流父类,而java.io.Reader和java.io.Writer是字符流的父类。
字符流知识方便我们读写字符,底层本质还是读写字节,知识字节和字符的转换,工作交给了转换流来完成。
转换流:
java.io.InputStreamReader
java.io.OutputStreamWriter
java提供的其他高级字符流都有一个特点就是只能连接在其他字符流上,但通常低级流都是字节流。这个就导致字符流不能直接搭配字节流使用,但是转换流例外;他们本身就是字符流,而他们又可以连接字节流,所以在实际开发中当我们使用高级的字符流时,通常与字节流连接时需要使用转换流,它起到了“承上启下”的作用,也就是“将字符转换为字节”的功能。
OutputStreamWriter构造方法中OutputStreamWriter(OutStream out)、InputStreamReader(InputStream in);
OutputStreamWriter(OutStream out,String charset)
InputStreamReader(InputStream in,String charset);
charset:编码格式

//输出字节流
FileOutputStream fos = new FileOutputStream("osw.txt");
//输出转换流
OutputStreamWriter osw = new OutputStream(fos,"UTF-8");
String str = "窗前明月光";
osw.writer(str);
osw.writer("疑是地上霜");
System.out.println(&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值