A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 子弹滞销 初级黑马   /  2018-11-29 13:43  /  716 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

关于IO流的构造方法
FileOutputStream(File file) //1
          创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(File file, boolean append) //2
          创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name) //3
          创建一个向具有指定名称的文件中写入数据的输出文件流。
FileOutputStream(String name, boolean append) //4
          创建一个向具有指定 name 的文件中写入数据的输出文件流。
按照api的说法是:
创建一个向具有指定名称的文件中写入数据的输出文件流。创建一个新 FileDescriptor 对象来表示此文件连接。//1
创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。创建一个新 FileDescriptor 对象来表示此文件连接。//2
理解为:如果参数列表中没有布尔值或者布尔值为false,则为文件覆盖写入   如果为true,则文件为追加写入
但实际中参数列表中如果为true的确为追加写入,但参数列表中没有布尔值或者为false却不是为覆盖,而是先清空文本,再写入数据.
比如new一个FileOutPutStream参数列表中不写布尔值(默认为false)或者布尔值为false,后面直接关流,运行程序,则会把文本内容清空!
个人理解为在new输出流时会判定后面的布尔值,如果为true则保留原始数据,如果为false则清空原始数据
在new FileOutPutStream(布尔为false)之后读取文本内容,直接为空(因为数据已经被清空了)!!!
具体的实现原理一脸懵逼!!!有大神了解否???


1 个回复

正序浏览
突然想起硬盘数据的清空即把那块区域标记为可覆盖区域,清空即覆盖!懂了!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马