flush()方法和写入文件的创建和反复写入图片的问题
1、课程案例中并没有用到 flush()方法,具体要怎么用?
2、写入的文件名可以随意取,但是要写入的文件并没有执行创建操作,也就是要写入的文件一开始并不存在,请问课程的复制操作案例里,这一步是在哪里实现的?
3、反复写入并没有增加文件大小,属于反复覆盖,但是输出流构造函数加第2个参数true后,同一张图片,写入多次,大小越来越大,但是图片大小,内容、分辨率什么都没变,增加的大小到哪儿去了?
正在回答 回答被采纳积分+1
同学你好~
1.由于缓冲区默认是填满才会清空并写出,所以当缓冲区未被填满但是需要写出的时候调用flush方法手动清空。在IO中,当调用close方法之后,会先清空缓冲区然后再关闭流对象,但是如果IO操作结束之后,程序没有执行结束,流对象还不能被关闭,此时为了保证数据完整,就需要先调用flush方法手动清空。
2.文件名在创建File对象的时候在参数中进行了指定,参数值为“某路径下的某文件”,其中“某文件”就必须是一个合法的文件名,而这个文件如果不存在,就会用这个名字来进行创建了。
3.文件不同于文本,文件会有文件头和一般文件数据。例如图片,最开始是文件头,系统识别到文件头之后才能将其正确的解析为图片形式,然后将一般文件数据解析为文件内容。但是第二次复制之后,会在一般文件数据的末尾追加一个新的文件头,这个文件头显然不是一般文件数据,那么就不能被解析,此时系统解析停止,后续数据就没有意义了。所以就会出现,无论复制多少次,只是文件的内存占用变大了,但是内容并没有改变。
祝学习愉快~
- 参与学习 2024 人
- 提交作业 1318 份
- 解答问题 1228 个
2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星