3 回答
TA贡献1784条经验 获得超9个赞
你前面回复中的理解的前半部分基本上是对的。
但不是在第 18 行的 write 方法中加入额外的参数,而是在构造 FileOutputStream 对象时加入一个 boolean 值参数,比如:
new FileOutputStream("文件名", true);
这里第二个参数的意义是“是否以追加模式创建文件”。
FileOutputStream 文件输出字节流的这两个构造方法对应不同的创建文件模式:
(String) 参数的方法表示以普通方式创建文件;(String, boolean) 参数的方法,如果第二个参数为 true 表示以追加模式创建文件。
普通模式下,如果你指定文件名的那个文件存在,本次写入是仍会从文件开头写入(或者说清空原文件写入);而追加模式下,如果你指定文件名的那个文件存在,本次写入就会那个文件已有内容的后面写入(或者说从文件尾部写入),这样文件原有的内容就不会被清空。
注意,指定写入方式只是在你创建文件时(或者说是构造 FileOutputStream 对象时),而向流中写入内容的方法都是 write(int),这个写入方法没有额外的参数。
所以,第一个图片中 20 行的代码是正确的。而最后一个图片代码中的关键区别是在第 17 行构造文件输出字节流对象时的第二个调用参数 true 上。
TA贡献1772条经验 获得超5个赞
我懂了,第一张图片里因为是创建了输出对象后,一次次地往里面写入东西,所以,写入的东西就按照顺序一个个都被存进去了,
然后第二章图片里面,是因为原来就存在这样的文件,之后以这个文件创建输出对象的时候,把这个文件原来里面的东西都清空了。如果我在第18行代码后面再加上什么内容,之前写入的100也是不会被删掉的,是这样吧?
添加回答
举报