我是靠谱客的博主 傲娇小海豚,最近开发中收集的这篇文章主要介绍Java IO流【缓冲流】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

缓冲流:缓冲流是一对高级流,功能是提高读写效率

链接它们以后,无论我们进行随机读写还是块读写,当经过缓冲流时都会被转换为块读写操作。

  • 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流【缓冲流】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部