JAVA中IO流 (FileWriter)以及close和 flush的区别

IO(Input,Output)流

流按照操作数据分为了 字节流字符流
字节流是通用的,比如传输图片,文字都是可以传输的。
但是字符流是基于字节流基础上的一种流,而且它的出现又和ASCII码 ,汉字的码也有着联系,所以适用于文字上的传输。

字节流的抽象基类

InputStream OutputStream

字符流的抽象基类

Reader Writer

所谓的基类就是父类的意思,这里我们就举了几个子类的例子:
FileInputStream 和FileReader就是上述延伸出来的子类


任务:在硬盘上创建一个文件并且写入一些文字数据。

我们先找到一个专门用于操作的文件的Writer子类的对象,FileWriter。后缀名是父类名,前缀名是该流对象的功能。

new FileWriter(Strings Filename);

代码部分

import java.io.*;
public class FileWriterDemo1 {
	public static void main(String args[])throws IOException{
		//创建一个FileWriter 对象,该对象一被初始化就需要要明确被操纵文件
		//该文件会被穿件到指定目录下,如果该目录下已有了同名文件的话,则会被覆盖。
		//其实该步就是在明确数据要存放在的目的地
		FileWriter fw=new FileWriter("quyuquan1111.txt");
		
		
		//调用write方法,将字符串写入到流中。
		fw.write("我来自汉中,是汉中的恩赐");
		//刷新流对象中的缓冲中的数据
		//将数据刷到目的地中
		//fw.flush
		
		//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
		//将数据刷到目的地中去。
		//和flush区别:flush 刷新后,流可以继续使用,close刷新后,会将流关闭。
		fw.close();
	}
}

结果

在这里插入图片描述

在填写Filename的时候,并没有写出明确的那个盘,所以直接储存在myeclipse10.7 下的文件夹下。

注意

这里,如果我们复写new FileWriter 的话,如果文件重名会将之前的文件覆盖。

fw.close 和fw.flush的区别

实际上,当我们写好了new FileWriter 的时候,我们进行下一步的操作,将数据写入文本,但是这时的数据并没有写入文本,而是存在了计算机中的流中。这也是JAVA能够在Windows 系统中调用文本流的作用。而如果在这里我们使用fw.flush时,是可以将存储在计算机流中的数据放入fw的,但是如果我们之后再想加入数据的时候,也就是说我们将写入的数据这句话放在fw.flush之后的话,之后输入的数据就不会放入到 quyuquan1111.txt中去。
再说一说fw.close, 我们可以去查询close的定义,很明确的写了 先刷新一次,然后关闭数据流。没错,事实上,close是包含了两步,flush 和close 这两步。所以我们注释掉了flush 因为在这里一个close语句就够用了。
flush 刷新后,流可以继续使用,close刷新后,会将流关闭。

对已经有的文件进行续写

代码

import java.io.*;
public class FileWriterDemo1 {
	public static void main(String args[])throws IOException{
		//创建一个FileWriter 对象,该对象一被初始化就需要要明确被操纵文件
		//该文件会被穿件到指定目录下,如果该目录下已有了同名文件的话,则会被覆盖。
		//其实该步就是在明确数据要存放在的目的地
		FileWriter fw=new FileWriter("quyuquan1111.txt",true);
		
		
		//调用write方法,将字符串写入到流中。
		fw.write("\r\n你听到的不关是音乐还有真实");
		//刷新流对象中的缓冲中的数据
		//将数据刷到目的地中
		//fw.flush
		
		//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。
		//将数据刷到目的地中去。
		//和flush区别:flush 刷新后,流可以继续使用,close刷新后,会将流关闭。
		fw.close();
	}
}

结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/quyuquan2014/article/details/82784408