BufferedOutputStream 源码分析
来源:互联网 发布:淘宝外贸男装店推荐 编辑:程序博客网 时间:2024/05/16 01:58
BufferedOutputStream实现了一个缓冲输出流。构建了这样一个输出流后,应用可以往底层流写数据而不用每次写一个字节都调用底层流的方法。
- public class BufferedOutputStream extends FilterOutputStream {
- // 内部缓冲区,存储数据
- protected byte buf[];
- // 缓冲区中有效的字节数(0 ~ buf.length)
- protected int count;
- // 构造方法,创建一个新的输出缓冲流,并把数据写到指定的底层输出流
- public BufferedOutputStream(OutputStream out) {
- this(out, 8192);
- }
- // 构造方法,创建一个新的输出缓冲流,以将具有指定缓冲区大小的数据写到指定的底层输出流。
- public BufferedOutputStream(OutputStream out, int size) {
- super(out);
- if (size <= 0) {
- throw new IllegalArgumentException("Buffer size <= 0");
- }
- buf = new byte[size];
- }
- // 刷新内部的缓冲区,这会让内部缓冲区的有效字节被写出到此缓冲的输出流中
- private void flushBuffer() throws IOException {
- if (count > 0) {
- out.write(buf, 0, count);
- count = 0;
- }
- }
- // 将指定的字节写入此缓冲的输出流
- public synchronized void write(int b) throws IOException {
- // 如果缓冲区满,则刷新缓冲区
- if (count >= buf.length) {
- flushBuffer();
- }
- buf[count++] = (byte)b;
- }
- // 将指定字节数组中的从偏移量off开始len个字节写入此缓冲的输出流
- public synchronized void write(byte b[], int off, int len) throws IOException {
- if (len >= buf.length) {
- // 如果待写入的字节数大于或等于缓冲区大小,刷新缓冲区,并直接写入到输出流中
- flushBuffer();
- out.write(b, off, len);
- return;
- }
- if (len > buf.length - count) {
- flushBuffer();
- }
- System.arraycopy(b, off, buf, count, len);
- count += len;
- }
- // 刷新此缓冲区和输出流,这会使所有缓冲的输出字节被写出到底层输出流中
- // 为了让缓冲区的数据能被写入到底层输出流中,可以显式调用该方法。或者调用close()方法(父类FilterOutputStream的close()方法),在close方法里,调用该flush()方法
- public synchronized void flush() throws IOException {
- flushBuffer();
- out.flush();
- }
- }
0 0
- BufferedOutputStream 源码分析
- BufferedOutputStream 源码分析
- [Java]BufferedOutputStream、DataInputStream源码分析
- Java IO:BufferedOutputStream使用详解及源码分析
- BufferedOutputStream 源码的个人理解
- (四)BufferedOutputStream源码学习
- BufferedOutputStream
- BufferedOutputStream
- JDK的java.io.BufferedOutputStream的源码
- Java8 I/O源码-BufferedInputStream与BufferedOutputStream
- BufferedOutputStream的缓存功能解析(源码阅读)
- BufferedInputStream、BufferedOutputStream
- BufferedInputStream&BufferedOutputStream
- BufferedInputStream/BufferedOutputStream
- BufferedOutputStream下载
- IO BufferedOutputStream
- Java_io体系之BufferedInputStream、BufferedOutputStream简介、走进源码及示例——10
- java io系列13之 BufferedOutputStream(缓冲输出流)的认知、源码和示例
- IOS控件之UITextField用法及注意点
- Executor框架简介
- BufferedInputStream和BufferedOutputStream类
- python导入模块的4种方法
- CoordinatorLayout的详细介绍
- BufferedOutputStream 源码分析
- BaseAdapter学习
- 【爬虫-反爬虫】系列二:【文章精选1】-互联网网站的反爬虫策略浅析
- CodeForces 342C
- JAVA自学之每日一题(八)
- Vue.js学习思维导图一览
- Linux学习----vim编辑器
- pta-旅游规划
- ubuntu升级python,安装pip等基本软件