一,前言
掌握缓冲流的概念,掌握字节字符缓冲流的使用,掌握字符流读行方法,换行方法。
二,概念
缓存流也称为高效流,或者高级流。缓冲流自带缓冲区,可以提高原始字节流,字符流读写数据的性能。
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(); } } } }
八,附加(缓冲区的概念)
某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低; 为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能;