文件 IO 之字符流 FileWriter 使用示例(构造,flush,close)

来源:互联网 发布:平安科技 数据生态圈 编辑:程序博客网 时间:2024/06/04 01:39

下面代码实例详细解释了FileWriter的常用构造函数,以及构造函数是如何操作文件的:没有就创建,有就覆盖或者续写,看你如何构造啦。以及flush方法和close方法的区别和理解

FileWriter构造方法常用的有以下2类。
1.FileWriter(String fileName) throws IOException
1.FileWriter(ile file) throws IOException
2.FileWriter(String fileName, boolean append) throws IOException
2.FileWriter(File file, boolean append) throws IOException


FileWriter 作用概述

用于写入字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是可接受的。要自己指定这些值,可以先在FileOutputStream 上构造一个OutputStreamWriter。

后半句,不是很明白,默认字符编码,就是自己系统默认编码。System.setProperty()方法,可以得到自己系统的默认编码。现在一般都是utf-8。FileWriter,字面意思,文件写,即把内存中的数据写出去,写到文件里面去,就方向而言是OutStream。


FileWriter 关于write方法的多个重载的说明:

        FileWriter.write( int c)                            //写单个字符        FileWriter.write( char cbuf[])                      //写字符数组        FileWriter.write( char cbuf[], int off, int len)    //从数组哪开始写数组多少长度的字符个数        FileWriter.write(String str)                        //写字符串        FileWriter.write(String str, int off, int len)      //从字符串哪开始写字符串多少长度的字符个数

关于几个方法的说明:
writer()
方法说明:改方法只是把数据写到系统流资源内,并没有直接把数据写到文件上。有个缓冲的概念存在。要想全部写入文件,得执行flush()方法。
flush()方法说明:作用就是把流资源中的数据,即缓冲中的数据,刷新到目的文件中,这样才能把所有数据全部写入文件。
close()方法说明:作用就是关闭系统流资源,在关闭之前,会执行一次flush方法,刷新缓冲区数据。
以上三个方法都有可能抛IOException异常。


以下是测试代码:

package com.lxk.FileTest;import java.io.FileWriter;import java.io.IOException;class FileWriterDemo {    public static void main(String[] args) throws IOException {        //创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。        //而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。        //其实该步就是在明确数据要存放的目的地。        FileWriter fw = new FileWriter("d:demo.txt");        //这个写法就是将续写文件。而不是像上面的直接覆盖。        //FileWriter fw = new FileWriter("d:demo.txt",true);        System.out.println(fw.getEncoding());        //调用write方法,将字符串写入到流中。        fw.write("abcde");        //刷新流对象中的缓冲中的数据。        //将数据刷到目的地即文件中        //fw.flush();        //close方法:关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。        //将数据刷到目的地中。        //和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。        fw.close();        //不用java,也可以新建文件,往里面写数据,说明windows本身具有这么个功能,那么java能往windows系统的文件写数据,说明Java在调用Windows        //的写数据的功能,这就是我们说的流资源,Java本身是不能往硬盘写数据的,Java会调用系统的内容来完成数据的建立,这些调用都是在使用windows的资源        //所以,用完一定要释放资源。        //这个例子没有很正确的姿势关闭文件流,需要注意哈。正确姿势是try catch finally中关闭流资源。    }}

测试结果,比较简单,就不上测试结果图拉。










2 0