Java缓冲和非缓冲流简单验证

本文深入探讨了缓冲流与非缓冲流的概念、工作原理以及它们在文件操作中的实际应用。通过对比实验,展示了缓冲流如何提高文件读写效率,以及在不同场景下的优势与限制。

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

缓冲流,是指当输出的时候带 有缓冲功能的流(BufferOutputStream),没有缓冲功能的流当其输出时是直接存入目的地,如果有缓冲功能,则会将输出的内容先放置在内存中,等到有一定数据量的时候,或是流关闭、或调用flush()方法时,才会将相应的内容保存到硬盘或是其它目的地中;(网上copy的)
验证一下:
                        byte[] a = {123,123,123};//{
byte[] b = {122,122,122};//z
 
FileInputStream  fis = new FileInputStream("/root/3.txt");
FileOutputStream fos = new FileOutputStream("/root/3.txt");

fos.write(a);
fis.read(b);
System.out.println(new String(b,0,3)); 
上面使用的是不带缓冲的FileInputStream FileOutputStream,输出结果为{{{。因为FileInputStream FileOutputStream不带缓冲,写入数据直接存在文件中,马上读就可以读出。所以不用关闭文件输出流文件内容已经更新。




                        byte[] a = {123,123,123};//{
byte[] b = {122,122,122};//z
 
FileInputStream  fis = new FileInputStream("/root/3.txt");
FileOutputStream fos = new FileOutputStream("/root/3.txt");
BufferedOutputStream dos=new BufferedOutputStream(fos); 

bos.write(a);
fis.read(b);
System.out.println(new String(b,0,3)); 

上面使用的是不带缓冲的BufferedOutputStream,输出结果为zzz。因为BufferedOutputStream带缓冲,写入数据没有直接存在文件中,不能马上读出。closeBufferedOutputStream之后文件内容才会更新。

byte[] a = {123,123,123,123,123,
123,123,123,123,123,
123,123,123,123,123,
123,123,123,123,123,
123,123,123,123,123,
123,123,123,123,123,
123,123,123,123};//{  34个
byte[] b = {122,122,122,122,122,
122,122,122,122,122,
122,122,122,122,122,
122,122,122,122,122,
122,122,122,122,122,
122,122,122,122,122,
122,122,122,122
};//z
 
FileInputStream  fis = new FileInputStream("/root/3.txt");
FileOutputStream fos = new FileOutputStream("/root/3.txt");
BufferedOutputStream dos=new BufferedOutputStream(fos,32); //缓冲区大小32Bytes

dos.write(a);
fis.read(b);
System.out.println(new String(b,0,34)); 

当写满缓冲区后,缓冲区的内容也会写入文件的。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值