IO_06_字节缓冲流/字符缓冲流

本文详细介绍了Java中使用BufferedInputStream和BufferedOutputStream对字节流进行缓冲优化的方法,通过比喻生动解释了缓冲流如何提高读写效率。同时,文章还展示了如何利用BufferedReader和BufferedWriter对字符流进行类似的性能提升,提供了完整的代码示例。

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

在这里插入图片描述
bufferedInputStream和bufferedOutputStream是对字节的缓冲提高读写的操作。打个比喻,以前搬家是一字节字节的搬,称为蚂蚁搬家。然后我们用汽车搬1k的搬,很慢。然后我们用更大的汽车搬,我们只需要1k或8k的打包,当打包到8个包时,然后司机一下都搬走,这样是不用频繁的读写硬盘了,所以性能就有了提升。

		is = new BufferedInputStream(new FileInputStream(src)) ;
		os = new BufferedOutputStream(new FileOutStream(src));

以下完整代码

public class IOtest01 {
	public static void main(String[] args) throws FileNotFoundException {
		//1.创建源
		File src = new File("D:/WorkSpace/IO/src/io.txt");
		InputStream is = null;
		//2.选择流
		try {
			 is = new BufferedInputStream(new FileInputStream(src)) ;
			//3.操作(读取)
			 int temp;
				try {
					while ((temp=is.read())!=-1) {//结尾的结果等于-1
						System.out.print((char)temp);
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
			
		}finally{
			//4.释放资源 
			try {
				if (null!=is) { //如果 is没有就不存在释放
					is.close();
				}
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}

	
}

字符缓冲流
在这里插入图片描述
BufferedReader&BufferedWriter的原理是一样的,上面的是提高字节性能,这是提高字符的性能。

字符输出流 加入 缓冲流 代码

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;

/*
 * 四个步骤:分段读取
 * 1.创建源 			选择房子
 * 2.选择流 			选择搬家公司
 * 3.操作     			选择用什么搬
 * 4.释放资源 		打发搬家公司
 */
public class IOtest02 {
	public static void main(String[] args) {
		//1.创建源
		File src = new File("D:/WorkSpace/IO/src/io.txt");
		BufferedReader reader = null;
		//2.选择流
		try {
			reader = new BufferedReader(new FileReader(src));
			//3.操作(逐行读取)
			
			String line =null;
				try {
					while ((line=reader.readLine())!=null) {//readLine 逐行读取
						//字节数组-->字符串
						System.out.println(line);
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			//4.释放资源 
			try {
				if (null!=reader) { //如果 is没有就不存在释放
					reader.close();
				}
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
}

字符输入 加入 缓冲流 代码

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/*
 * 四个步骤:分段读取
 * 1.创建源 			选择房子
 * 2.选择流 			选择搬家公司
 * 3.操作     			选择用什么搬
 * 4.释放资源 		打发搬家公司
 */
public class BufferedTest04 {
	public static void main(String[] args) throws IOException {
		//1.创建源
		File src = new File("src/test.txt");
		//2.选择流
		BufferedWriter writer = null;
		try {
			writer = new BufferedWriter(new FileWriter(src)); //如果是true在原有的后面加,如果是flass测是替换原有的
			//3.操作(写入)
			writer.append(" IO is so easy");
			writer.newLine(); //换行符
			writer.append("纯洁小美男");
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				writer.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值