JDK 源码阅读笔记(一)--OutputStream

FileOutputStream类

1.一个文件可以由多个FileOutputStream打开,这个特性跟具体的操作系统有关。

2.一个流关闭,文件并不一定关闭

3.不同流可向文件中写数据,这部分同步控制由底层控制,程序员可以不管。

这三个特性是由FileDescriptor保证的。当这个文件新创建了一个流时,计数器加一。

当一个流关闭时,FD计数器减一,这时还要看这个流的channel是否为null,如果不为null还要关闭channel,同时还得让FD计数器减一。

当FD计数器减为0时,并且isRunningFinalize(),则真正关闭文件。

BufferedOutputStream重要的方法,看英文注释。

    public synchronized void write(byte b[], int off, int len) throws IOException {
	if (len >= buf.length) {
	    /* If the request length exceeds the size of the output buffer,
    	       flush the output buffer and then write the data directly.
    	       In this way buffered streams will cascade harmlessly. */
	    flushBuffer();
	    out.write(b, off, len);
	    return;
	}
	if (len > buf.length - count) {
	    flushBuffer();
	}
	System.arraycopy(b, off, buf, count, len);
	count += len;
    }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值