概述
缓冲流:缓冲流是一对高级流,功能是提高读写效率
链接它们以后,无论我们进行随机读写还是块读写,当经过缓冲流时都会被转换为块读写操作。
- java.io.BufferedInputStream
- java.io.BufferedOutputStream
package io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BisDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("music.mp3");
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("music_cp.mp3",true);
BufferedOutputStream bos = new BufferedOutputStream(fos);
int d = -1;
long start = System.currentTimeMillis();
while((d = bis.read()) != -1) {
bos.write(d);
System.out.println(d);
}
long end = System.currentTimeMillis();
System.out.println("复制完毕,用时:"+(end-start)+"毫秒");
bis.close();
bos.close();
}
}
缓冲输出流的缓冲区问题:
package io;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class BosFlush {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("bos.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
String line = "您好,欢迎您,Hello,萨瓦迪卡";
byte[] data = line.getBytes("UTF-8");
/*
* 缓冲流的write方法并不是立即将数据写出,
* 而是先将数据存入其内部的数组中,当数组
* 装满时才会做一次真实写操作。(转化为块写操作的过程)
*
*/
bos.write(data);
/*
* flush方法的意义是强制将缓冲流已经缓存的数据一次性写出。
* 这样做可以让写出的数据有即时性,但是频繁调用会降低写效率。
* 在更关注写出的即时性时应当使用该方法。
*
*/
//bos.flush();
System.out.println("写出完毕");
/*
* close方法中会调用一次flush方法
*/
bos.close();
}
}
最后
以上就是傲娇小海豚为你收集整理的Java IO流【缓冲流】的全部内容,希望文章能够帮你解决Java IO流【缓冲流】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复