是否
final OutputStream output = new FileOutputStream(file);
Run Code Online (Sandbox Code Playgroud)
截断file它是否已经存在?令人惊讶的是,Java 6的API文档没有说明.Java 7的API文档也没有.语言本身的规范与FileOutputStream类的语义无关.
我知道
final OutputStream output = new FileOutputStream(file, true);
Run Code Online (Sandbox Code Playgroud)
导致附加到文件.但附加和截断不是唯一的可能性.如果将100个字节写入1000字节文件,则有一种可能性是最终的900字节保持不变.
FileOutputStream没有该append选项会截断文件.请注意,FileOutputStream打开一个Stream,而不是一个随机访问文件,所以我想它的行为方式确实有意义,尽管我同意文档可以更加明确.