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;
}
本文详细探讨了FileOutputStream类的特性,包括多流打开、文件关闭机制及BufferedOutputStream的重要方法,通过实例解释了这些概念并提供了关键代码段。
4300

被折叠的 条评论
为什么被折叠?



