FileOutputStream 继承自 OutputStream 。
OutputStream 的源码分析见:http://blog.csdn.net/yx0628/article/details/79370689
同时可以参考 FileInputStream 的源码:http://blog.csdn.net/yx0628/article/details/79344859
FileOutputStream 和 FileInputStream 二者对应,而且二者特别相似,只需要看懂一个源码另一个也就明白了。
属性
// 文件描述符,处理打开的文件
private final FileDescriptor fd;
// 是否在文件尾部开始追加写入
private final boolean append;
// 用于读、写、映射、操作文件的通道
private FileChannel channel;
// 文件的路径,如果该流是通过文件描述类创建的,该属性则为空
private final String path;
// 一个关闭锁,只在close()方法中使用,确保多线程同步调用,同时和其他同步方法不冲突(因为这个关闭锁是自己的对象锁)
private final Object closeLock = new Object();
// 流是否是关闭的,volatile保证多线程的可见性
private volatile boolean closed = false;
构造函数
// 创建一个向指定File对应的文件中写入数据的文件输出流
public FileOutputStream(String name) throws FileNotFoundException {
this(name != null ? new File(name) : null, false);
}
// 创建一个向指定File对应的文件中写入数据的文件输出流
// 第二个参数append是否在文件末尾开始写入
public FileOutputStream(String name, boolean append)