我查看了FileOutputStream的java文档 http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File) 并看到一个构造函数只接受了一个文件对象,另一个构造函数接受了一个文件对象和一个布尔附加。第一个构造函数是否会调用第二个构造函数,并将false传递为append? Java文档没有谈论这个
答案 0 :(得分:0)
是的,(Oracle JDK)FileOutputStream
使用构造函数链接。这只是一个实现细节,除非在API规范(javadoc)中引用,否则不应该依赖它。
Here's the OpenJDK JDK implementation which also chains constructor calls.
答案 1 :(得分:0)
如果使用不带布尔值的构造函数,则会发生以下情况。
FileOutputStream(File file) throws FileNotFoundException {
this(file, false);
}
通常在这种情况下,根据最常用的操作确定值true或false。因此,如果您在OutputStream上编写,您将在大多数时间创建一个新文件,因此默认情况下会传递false
。
干杯!!
答案 2 :(得分:0)
public FileOutputStream(File file) throws FileNotFoundException {
this(file, false);
}
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();
}
this.fd = new FileDescriptor();
this.append = append;
fd.incrementAndGetUseCount();
open(name, append);
}
通常,JavaDoc不会说内部细节。它仅用于API描述。