IO流(缓冲流)

IO流(缓冲流)

一,前言

​ 掌握缓冲流的概念,掌握字节字符缓冲流的使用,掌握字符流读行方法,换行方法。

二,概念

​ 缓存流也称为高效流,或者高级流。缓冲流自带缓冲区,可以提高原始字节流,字符流读写数据的性能。

BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter

三,字节缓冲输入流(BufferedInputStream)

​ 在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。缓冲区用以减少频繁的IO操作,提高程序的性能。

1.构造方法

BufferedInputStream(InputStream in):
	创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。          
BufferedInputStream(InputStream in, int size):
	创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

2.常用方法

void close():
	关闭此输入流并释放与该流关联的所有系统资源。 
int read(byte[] b):
	从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。 

四,字节缓冲输出流(BufferedOutputStream)

​ 在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。缓冲区减少IO操作以提高性能。

1.构造方法

BufferedOutputStream(OutputStream out):
	创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size):
	创建一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流。

2.常用方法

void close():
	关闭此文件输出流并释放与此流相关联的任何系统资源。
void write(byte[] b,int off,int len):
	将 b.length个字节从指定的字节数组写入此文件输出流。
void flush():
	刷新此输出流并强制任何缓冲的输出字节被写出。 

五,字符缓冲输入流(BufferedReader)

​ 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

1.构造方法

BufferedReader(Reader in):
	创建一个使用默认大小输入缓冲区的缓冲字符输入流。 
BufferedReader(Reader in, int sz):
	创建一个使用指定大小输入缓冲区的缓冲字符输入流。 

2.常用方法

String readLine():
	读取一个文本行。 

六,字符缓冲输出流(BufferedWriter)

​ BufferedWriter使用装饰器模式,对Writer类的子类提供缓存机制。

1.构造方法

BufferedWriter(Writer out):
	创建一个使用默认大小输出缓冲区的缓冲字符输出流。          
BufferedWriter(Writer out, int sz):
	创建一个使用给定大小输出缓冲区的新缓冲字符输出流。 

2.常用方法

 void newLine():
 	写入一个行分隔符。 

七,字符缓冲流的操作示例

例:

public static void main(String[] args) {
		//创建缓冲流
		File file = new File("E:/aaaa.txt");
		File f = new File("C:\\Users\\29854\\Desktop\\aaa.txt");
		BufferedReader bd = null;
		BufferedWriter bw = null;
		try {
			bd = new BufferedReader(new FileReader(file));
			bw = new BufferedWriter(new FileWriter(f,true));
			//读写数据
			String str = null;	
			while ((str = bd.readLine()) != null) {			
                bw.write(str);
                bw.newLine();
				bw.flush();
			}		
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			//关流
			if (bd != null) {
				try {
					bd.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			if (bw != null) {
				try {
					bw.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}	
		}	
	}

八,附加(缓冲区的概念)

​ 某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低;
​ 为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能;

posted @   morrowday  阅读(203)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示