阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

字节缓冲流

173次阅读
没有评论

共计 1160 个字符,预计需要花费 3 分钟才能阅读完成。

1、字节缓冲流

字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区效果,java 本身在设计的时候,也考虑到了这样的设计思想 (装饰设计模式后面讲解),所以提供了字节缓冲区流

字节缓冲输出流
BufferedOutputStream
字节缓冲输入流
BufferedInputStream

这种类被称为:缓冲区类 (高效类)

构造方法可以指定缓冲区的大小,但是我们一般用不上,因为默认缓冲区大小就足够了

缓冲流写数据

public static void main(String[] args) throws IOException {// 构造器 // BufferedOutputStream(OutputStream out) // 创建基本的字节输出流对象 // FileOutputStream fos = new FileOutputStream("bos.txt"); // 字节缓冲输出流对字节输出流对象进行包装 // BufferedOutputStream bos = new BufferedOutputStream(fos); // 简单写法 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("bos.txt")); // 写数据 bos.write("hello".getBytes()); // 释放资源 bos.close();}

缓冲流读数据

public static void main(String[] args) throws IOException {// BufferedInputStream(InputStream in) BufferedInputStream bis = new BufferedInputStream(new FileInputStream("bos.txt")); // 读取数据, 一次读一个字节 // int by = 0; // while ((by = bis.read()) != -1) { // System.out.print((char) by); // } // System.out.println("---------"); // 读取数据,一次读一个字节数组 byte[] bys = new byte[1024]; int len = 0; while ((len = bis.read(bys)) != -1) {System.out.print(new String(bys, 0, len)); } // 释放资源 bis.close();}

为什么不传递一个具体的文件或者文件路径,而是传递一个 OutputStream 对象呢?
原因很简单,字节缓冲区流仅仅提供缓冲区,为高效而设计的。但是呢,真正的读写操作还得靠基本的流对象实现。

2、字节缓冲流复制数据练习

把 d:\a.txt 内容复制到当前项目目录下的 b.txt 中

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-06-06发表,共计1160字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中