FileWriter写出数据的操作
这里的写出指的是从程序中写出数据到硬盘中
注意:
-
输出操作: 写出到的目标File文件(终点)对应在硬盘中的文件可以不存在
-
如果File对象对应的文件在硬盘中不存在,则会自动创建这个文件
-
File对应的文件如果在硬盘中存在:
-
如果这个时候流使用的构造器是:FileWriter(File file ,boolean append)并且这个时候第二个参数是false时或者是FileWriter(File file),这个时候就是对原有文件进行覆盖
-
这个FileWriter(File file,boolean append)方法中的第一个参数是: 写出的终点(这个时候就是一个File对象) — 这个File对象对应的硬盘中的位置就是我们要写出的位置
-
这个FileWriter(File file, boolean append)方法中的第二个参数是: 判断是否在原文件基础上追加
- 如果这个参数为true,这个时候就在原文件上进行追加,如果这个参数为false,这个时候就对原文件进行覆盖
-
如果使用的是FileWriter(File file),这个时候就是默认对文件进行覆盖
注意: 这个时候在底层源码中其实是如果我们使用一个参数的构造方法,这个时候就默认第二个是否追加的参数为false
- 如果是1这种情况之下,这个时候我们的append参数为false,这个时候如果我们的程序中是在指定文件中写入一个"I have a dream!",这个时候不管我们执行多少次这个程序,这个时候指定文件中只有一句 “I have a dream!”
-
-
如果这个时候流使用的构造器是: FileWriter(File file, boolean append),并且这个时候第二个参数还为true时,这个时候就是在原有的文件后面进行追加内容
- 如果是情况二的时候,这个时候如果我们的程序时向指定文件中写入一句"I have a dream!",这个时候我们将这个程序如果执行十次,这个时候我们去看这个文件中,这个文件中就有了十句"I have a dream!";
-
-
关于使用FileWriter进行写出数据的操作 — 我们这里通过一个例子来进行深入理解
package IO流.FileWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.File;
public class Demo1 {
public static void main(String[] args){
FileWriter fileWriter = null;
try {
/*
File类的实例化 --- 指明了文件写出的位置
注意: 我们进行写出时,这个时候对应的写出的终点文件可以不存在,这个时候如果不存在会自动进行创建
*/
File file = new File("Hello.txt");
/*
FileWriter类的实例化,也就是创建了输出流对象
这个时候可以理解为我们使用了一个通道联通了我们的程序和硬盘中的对应的文件,如果这个时候
硬盘中的对应的文件不存在,这个时候就会先在硬盘中创建出这个文件
*/
fileWriter = new FileWriter(file);
/*
进行数据的写出操作,就是向我们的输出目标文件中写入这个对应的字符串内容 ---- 这个时候
要判断这个FileWriter对象创建的时候append参数是true还是false,如果是true,这个时候
就在原有的文件后面进行追加 ,如果这个参数为false,这个时候就是对原有文件进行覆盖
*/
fileWriter.write("I have a dream!");
fileWriter.write("you need to have a dream!");
//我们上面写的这两句话中没有回车,这个时候就会写在一行,如果要进行换行就要加上\n
}catch(IOException e){
e.printStackTrace();
}finally{
if(fileWriter != null) {
try {
/*
流的关闭 --- 也就是关闭资源
*/
/*
这个时候我们对流进行关闭的时候,这个时候我们要将这个输出流对象定义在方法体中,但是不能讲
流对象定义在try代码块中 --- 因为这个时候如果我们将流对象定义在了try结构中,这个时候
我们除了try代码块之后就不能使用try中定义的引用了,这个时候我们也就无法对try中定义的流
进行关闭了,所以我们将这个流对象定义在了方法中,并且赋初始值为null
*/
fileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
-
这个例题中我们将创建这个FileWriter对象的时候使用的构造器是一个参数的构造器FileWriter(File file);,这个时候append属性默认为false – 也就是默认就是对原文件进行覆盖
- 这个时候我们执行十次这个程序之后可以发现,这个时候我们的指定文件中还是只要一句"I have a dream!you need to have a dream!"
-
但是这个时候如果我们将这个程序中的FileWriter对象的创建的构造器改为FileWriter(File file , boolean append) ,并且这个时候将第二个参数赋值为false — 这个时候就是对原文件进行追加
- 那么这个时候如果我们将程序执行十次,这个时候我们就可以发现指定文件中有十句 “I have a dream!you need have a dream!”