缓冲流也叫高效流,可以更高效的进行读取;
转换流:可以进行编码转换
序列化流:持久化存储对象git
缓冲流--就是对应4个File**** 流的加强流
字节缓冲流:BufferedInputStream,BufferedOutputStream
字符缓冲流:BufferedReader,BufferedWritergithub
缓冲流在建立流对象时,会建立一个内置的默认大小的缓冲区数组,经过缓冲区的读写,减小系统IO次数,从而提升读写的效率数组
构造方法测试
BufferedInputStream(InputStream in)
建立一个 BufferedInputStream并保存其参数,输入流 in ,供之后使用。
BufferedInputStream(InputStream in, int size)
建立 BufferedInputStream具备指定缓冲区大小,并保存其参数,输入流 in ,供之后使用。编码
BufferedInputStream 的方法code
int available()
返回从该输入流中能够读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
void close()
关闭此输入流并释放与流相关联的任何系统资源。
void mark(int readlimit)
见的总承包 mark的方法 InputStream 。
boolean markSupported()
测试这个输入流是否支持 mark和 reset方法。
int read()
见 read法 InputStream的通常合同。
int read(byte[] b, int off, int len)
从给定的偏移开始,将字节输入流中的字节读入指定的字节数组。
void reset()
见 reset法 InputStream的通常合同。
long skip(long n)
见 skip法 InputStream的通常合同。对象
示例:继承
/** * bufferedInputStream的使用步骤 * 1.建立bufferedInputStream对象,并在构造方法中传入InputStream * 2.使用bufferedInputStream对象的read()方法读取数据 * 3.释放资源 */ static void bufferedInputStream() { try ( BufferedInputStream bis = new BufferedInputStream(new FileInputStream("./src/JavaCore/IO/BOS.txt"), 1024) ) { int len; byte[] bytes = new byte[1024]; while ((len = bis.read(bytes)) != -1) { System.out.println(new String(bytes, 0, len)); } } catch (IOException E) { System.out.println(E); } }
构造方法ip
BufferedOutputStream(OutputStream out)建立一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size)建立一个新的缓冲输出流,以便以指定的缓冲区大小将数据写入指定的底层输出流。
方法:
intavailable()返回从该输入流中能够读取(或跳过)的字节数的估计值,而不会被下一次调用此输入流的方法阻塞。
voidclose()关闭此输入流并释放与流相关联的任何系统资源。
voidmark(int readlimit)见的总承包 mark的方法 InputStream 。
booleanmarkSupported()测试这个输入流是否支持 mark和 reset方法。
intread()见 read法 InputStream的通常合同。
intread(byte[] b, int off, int len)从给定的偏移开始,将字节输入流中的字节读入指定的字节数组。
示例:
/** * bufferedOutputStream的使用步骤 * 1.建立bufferedOutputStream对象,并在构造方法中传入OutputStream * 2.使用bufferedOutputStream的write()方法将数据写入缓冲区 * 3.flush()将缓冲区的数据刷入文件 * 4.关闭流 */ static void bufferedOutputStream() { //这里使用的JDK7的新特性,在try中new 流对象,使用完后自动关闭 try ( BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("./src/JavaCore/IO/BOS.txt"), 1024) ) { bos.write("这是一个昂扬的时代,同时充满了悲伤的故事".getBytes()); } catch (IOException e) { System.out.println(e); } }
buffredReader--继承关系java.lang.Objec<-java.io.Write<-rjava.io.BufferedWriter
构造方法:
BufferedWriter(Writer out)建立使用默认大小的输出缓冲区的缓冲字符输出流。
BufferedWriter(Writer out, int sz)建立一个新的缓冲字符输出流,使用给定大小的输出缓冲区。
因此buffredReader的使用和Writer的方法基本一致,但buffredReader是须要传入一个writer对象,同时在buffredReader的方法中有一个新方法就是:
public void newLine() throws IOException写一行行分隔符。 行分隔符字符串由系统属性line.separator定义,并不必定是单个换行符('\ n')字符。
newLine()直接调用系统的line.separator定义。
bufferedReader--继承关系:
java.lang.Object<-java.io.Reader<-java.io.BufferedReader
构造方法:
BufferedReader(Reader in)建立使用默认大小的输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)建立使用指定大小的输入缓冲区的缓冲字符输入流。
bufferedReader构造方法中传入Reader对象,而后方法使用也基本和reader一致,但有一个独有方法:
public String readLine() throws IOException
读一行文字。 一行被视为由换行符(' n'),回车符(' r')中的任何一个或随后的换行符终止。
返回所读取行的内容,若是已经到达流的末尾则为null
本博客为Swagger-Ranger的笔记分享,文章会持续更新 文中源码地址: https://github.com/Swagger-Ranger 欢迎交流指正,若有侵权请联系做者确认删除: liufei32@outlook.com