FileOutputStream提供了五个构造方法,分别是
public FileOutputStream(String name) throws FileNotFoundException { this(name != null ? new File(name) : null, false); }
FileOutputStream的构造方法允许直接传入文件路径,而无须使用File对象。查看该构造方法的源代码,其内部使用了File对象打开文件。
如果filepath指定的文件不存在, 文件输出流会帮我们自动创建一个文件。仅仅是文件而已。 如果filepath中包含尚未创建的目录, 就会抛出文件找不到异常。 所以在使用输出流之前, 最好使用File的mkdirs方法, 先创建文件的目录信息
public FileOutputStream(String name, boolean append) throws FileNotFoundException{ this(name != null ? new File(name) : null, append); }
append参数为true时,数据从文件尾部写入;append参数为false时,数据覆盖原文件
public FileOutputStream(File file) throws FileNotFoundException { this(file, false); }
使用File对象打开本地文件,向文件写入数据
public FileOutputStream(File file, boolean append) throws FileNotFoundException { String name = (file != null ? file.getPath() : null); SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkWrite(name); } if (name == null) { throw new NullPointerException(); } if (file.isInvalid()) { throw new FileNotFoundException("Invalid file path"); } this.fd = new FileDescriptor(); fd.attach(this); this.append = append; this.path = name; open(name, append); }
append参数为true时,数据从文件尾部写入;append参数为false时,数据覆盖原文件
public FileOutputStream(FileDescriptor fdObj) { SecurityManager security = System.getSecurityManager(); if (fdObj == null) { throw new NullPointerException(); } if (security != null) { security.checkWrite(fdObj); } this.fd = fdObj; this.append = false; this.path = null; fd.attach(this); }
该构造方法需要了解的话可以参考该博文:http://www.cnblogs.com/skywang12345/p/io_09.html