Java--缓冲流

本文介绍了Java中的缓冲流,包括BufferedInputStream、BufferedOutputStream、BufferedReader和BufferedWriter,详细阐述了它们的作用和使用方法,如flush()、write()、readLine()和newLine()等,并指出关闭缓冲流时会自动关闭底层流。

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

一:缓冲流

   缓冲流是处理流的一种,建立在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,还增加了一些新的方法

JDK提供四种缓冲流

BufferedInputStream (缓冲字节输入流)可以对任何的InputStream流进行包装

BufferedOutputStream (缓冲字节输出流)可以对任何的OutputStream流进行包装

flush()       刷新缓冲输出流。

write(byte[] b, int off, int len)  len字节指定字节数组中的起始偏移 off这个缓冲输出流。

write(int b) 将指定的字节写入该缓冲输出流中。

BufferedReader (缓冲字符输入流)可以对任何的Reader流进行包装

新增了readLine()方法用于一次读取一行字符串

BufferedWriter (缓冲字符输出流)可以对任何的Writer流进行包装

新增了newLine()方法用于写出一个行分隔符 

  对于缓冲输出流,写出的数据会先缓存在内存缓冲区中,关闭此流前要用flush()方法将缓存区的数据立刻写出。

     关闭缓冲流时,会自动关闭缓冲流所包装的所有底层流

package buffer;
import java.io.*;
public class BufferedInputStreamDemo {

	public static void main(String[] args) {
        File f=new File("f:"+File.separator+"qmshy.mpg");
        InputStream input=null;
        BufferedInputStream bis=null;
        try {
			input=new FileInputStream(f);
			bis=new BufferedInputStream(input);   // 将FileInputStream包装到BufferedInputStream缓冲流中
			int data=0;
			System.out.println("使用缓冲开始读取...");
			while((data=bis.read())!=-1){
			//	System.out.print((char)data);
			}
			System.out.println("使用缓冲读取结束!");
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				bis.close();
				input.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
package buffer;
import java.io.*;
public class BufferedOutputStreamDemo {
	public static void main(String[] args) {
        File f=new File("c:"+File.separator+"test.txt");
        OutputStream out=null;
        BufferedOutputStream bos=null;
        try {
			out=new FileOutputStream(f,true);   // 启用追加模式
			bos=new BufferedOutputStream(out);   // 将FileOutputStream包装到BufferedOutputStream缓冲输出流
			bos.write("hello,字节缓冲输出流".getBytes());
			bos.flush();
			System.out.println("写入成功!");
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				bos.close();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

运行结果:


package buffer;
import java.io.*;
public class BufferedReaderDemo {
	public static void main(String[] args) {
		File f=new File("c:"+File.separator+"test.txt");
		int count=0;
		Reader r=null;
		BufferedReader br=null;
		try {
			r=new FileReader(f);
			br=new BufferedReader(r);   // 使用BufferedReader包装FileReader
			String line="";  // 存储获取到的行内容
			while((line=br.readLine())!=null){
				count++;
				System.out.println(count+"\t"+line);
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			try {
				br.close();
				r.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

运行结果:

package buffer;
import java.io.*;
public class BufferedWriterDemo {
	public static void main(String[] args) {
		File f=new File("c:"+File.separator+"test.txt");
		Writer w=null;
		BufferedWriter bw=null;
		try {
			w=new FileWriter(f,true);
			bw=new BufferedWriter(w);   // 将FileWriter包装到BufferedWriter中
			bw.write("锄禾日当午");
			bw.newLine();   // 写入换行
			bw.write("汗滴禾下土");
			bw.newLine();  // 写入换行
			bw.write("谁知盘中餐");
			bw.newLine();  // 写入换行
			bw.write("粒粒皆辛苦");
			bw.newLine();  // 写入换行
			bw.flush();    // 输入到磁盘
			System.out.println("写入成功!");		
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				bw.close();
				w.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值