黑马程序员技术交流社区

标题: 【成都校区】日常学习 [打印本页]

作者: 陈靖仇是你爸爸    时间: 2018-11-29 13:56
标题: 【成都校区】日常学习
关于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)之后读取文本内容,直接为空(因为数据已经被清空了)!!!
具体的实现原理一脸懵逼!!!有大神了解否???






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2