目录
- BufferedInputStream/BufferedOutputStream
--5.1 BufferedOutputStream 缓冲输出字节流
--5.2 BufferedInputStream 缓冲输入字节流
--5.3 使用BufferedInputStream和BufferedOutputStream进行拷贝
5.BufferedInputStream/BufferedOutputStream(需要flush()才可写入)
字节缓冲流(内置一个缓冲区(数组))
内存的运算效率比硬盘快很多,所以只有降低硬盘的读取次数才会提高效率。
5.1 BufferedOutputStream
程序向流中写出字节时,不会直接写到文件中,会先写到缓冲区中,直到缓冲区写满,才会把缓冲区中的数据一次性写到文件中。
- BufferedOutputStream常用构造方法
public BufferedOutputStream(OutputStream out)
2.重要方法
public synchronized void write(int b)
public synchronized void write(byte b[], int off, int len)
public synchronized void flush() //用于刷新缓冲区,刷新后可再次读出,而close是关闭流释放资源了。
5.2 BufferedInputStream
程序读取字节时,BufferedInputStream一次性从文件中读取8192个字节存在缓冲区,程序读取时,不用找文件,直接从缓冲区中读取,直到缓冲区中的所有字节都被读取,再重新从文件中读取8192个字节。
- BufferedInputStream常用构造方法
public BufferedInputStream(InputStream in)
2.重要方法
public synchronized int read()
public synchronized int read(byte b[], int off, int len)
5.3 使用BufferedInputStream和BufferedOutputStream进行拷贝
File dir = Environment.getExternalStorageDirectory();
File file = new File(dir, "abc.txt");
File dst = new File(dir, "dst1.text");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream(dst);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] buffer = new byte[1024];
int len = -1;
while((len = bis.read(buffer))!=-1){
bos.write(buffer,0,len);
}
bis.close();
fis.close();
fos.close();
bos.close();