c++读取文本文件里的指定位置的字符_Java I/O 流之缓冲字节流_缓冲字符流

f2454533ccc40567a94aaee324675117.png

一、BufferedInputStream / BufferedOutputStream 缓冲字节流

1、概念

Java 缓冲流本身并不具有 IO 流的读取与写入功能,只是在别的流(节点流或其他处理流)上加上缓冲功能提高效率,就像是把别的流包装起来一样,因此缓冲流是一种处理流(包装流)

当对文件或者其他数据源进行频繁的读写操作时,效率比较低,这时如果使用缓冲流就能够更高效的读写信息。因为缓冲流是先将数据缓存起来,然后当缓存区存满后或者手动刷新时再一次性的读取到程序或写入目的地。

因此,缓冲流还是很重要的,我们在 IO 操作时记得加上 缓冲流来提升性能

下面我们通过两种方式(普通文件字节流与缓冲文件字节流)实现一个文件的复制,来体会一下缓冲流的好处。

2、字节流和缓冲字节流区别

1)FileInputStream 和 FileOutputStream 是节点流

e67090d01f93cfd2b14a6bf5739aba6a.png

2)BufferedInputStream 和 BufferedOutputStream 是处理流(包装流)

7174f42e863d52eeeb8babf1cb3df946.png
分析:

1) 读文件和写文件都使用了缓冲区,减少了读写次数,从而提高了效率

2) 当创建这两个缓冲流的对象时时,会创建了内部缓冲数组,缺省使用 32 字节大小的缓冲区.

3) 当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区

4) 当写入数据时,首先写入缓冲区,当缓冲区满时,其中的数据写入所连接的输出流。使用方法 lush()可以强制将缓冲区的内容全部写入输出流

5) 关闭流的顺序和打开流的顺序相反.只要关闭高层流即可,关闭高层流其实关闭的底层节点流

6) flush()的使用:手动将 buffer 中内容写入文件

3、使用缓冲流实现文件的高效率复制

示例代码:
public 
运行结果:

98224cb2e281ff83eec94c42f1053325.png
注意:

1. 在关闭流时,应该先关闭最外层的包装流,即“后开的先关闭”。

2. 缓存区的大小默认是8192字节,也可以使用其它的构造方法自己指定大小。

二、BufferedReader / BufferedWriter 缓冲字符流

BufferedReader / BufferedWriter 增加了缓存机制,大大提高了读写文本文件的效率,同时,提供了更方便的按行读取的方法:readLine(); 处理文本时,我们一般可以使用缓冲字符流。

案例:使用 BufferedReader 与 BufferedWriter 实现文本文件的复制
public 
注意: 1. readLine() 方法是 BufferedReader 特有的方法,可以对文本文件进行更加方便的读取操作。 2. 写入一行后要记得使用 newLine() 方法换行。
知乎视频​www.zhihu.com

希望可以帮到大家~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值