IO流
|--字节流
|--字节输入流
InputStream ------抽象类
int read():一次读取一个字节
int read(byte[] bys):一次读取一个字节数组
|--FileInputStream ------extends InputStream
|--BufferedInputStream ------extends FilterInputStream ------extends InputStream
|--ByteArrayInputStream ------extends InputStream
|--StringBufferInputStream ------extends InputStream
|--字节输出流
OutputStream ------抽象类
void write(int by):一次写一个字节
void write(byte[] bys,int index,int len):一次写一个字节数组的一部分
|--FileOutputStream ------extends OutputStream
|--BufferedOutputStream ------extends FilterOutputStream ------extends OutputStream
|--ByteArrayOutputStream ------extends OutputStream
该类定义为缓冲区类(高效类)
一、BufferedOutputStream:
该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。
构造方法:
- BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
- BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
二、BufferedInputStream:
BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节
构造方法:
- BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
- BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
//fos.txt:111111111111111111111111
System.out.println("-------------写入--------------");
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("fos.txt"));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("fos1.txt"));
byte[] bys=new byte[1024];
int len=0;
while((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bos.close();
bis.close();
System.out.println("-------------读取--------------");
BufferedInputStream bis1=new BufferedInputStream(new FileInputStream("fos1.txt"));
byte[] bys1=new byte[1024];
while((len=bis1.read(bys1)) !=-1){
System.out.println(new String(bys1,0,len));
}
输出:
-------------写入--------------
-------------读取--------------
111111111111111111111111