Java字符流FileWriter

字节流的抽象基类

InputStream             OutputStream

字符流的抽象基类

                        Reader                 Writer        

注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。而子类名的前缀都是该对象的功能。

 

Writer

常用方法

abstract void

close()
关闭此流,但要先刷新它。

abstract void

flush()
刷新该流的缓冲。

void

write(char[] cbuf)
写入字符数组。

abstract void

write(char[] cbuf, int off, int len)
写入字符数组的某一部分。

void

write(int c)
写入单个字符。

void

write(String str)
写入字符串。

void

write(String str, int off, int len)
写入字符串的某一部分。

 

需求:将一些文字存储到硬盘的一个文件中。

记住:如果操作文字数据,建议优先考虑字符流。

而且要将数据从内存写到硬盘中,要使用字符流中的输出流,Writer。

 

构造方法

FileWriter(File file)
根据给定的 File 对象构造一个 FileWriter 对象。

FileWriter(String fileName)
根据给定的文件名构造一个 FileWriter 对象。

FileWriter(String fileName, boolean append)
可以续写,不再覆盖。

 

换行

fw.write("abcde"+System.getProperty("line.separator")+"hahaha");

 

FileWriterDemo.java

import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo {
   public static void main(String[] args) {
      // 创建一个可以往文件中写入字符数据的字符流对象。
      /**
       * 既然是往一个文件中写入数据,那么那么创建对象时,就必须明确该文件(用于存储的目的地) 如果文件不存在,则会自动创建。
       * 如果文件存在,则会覆盖。
       */
      FileWriter fw = null;
      try {
         fw = new FileWriter("demo.txt");
         // 调用Writer对象中的write(string)方法,写入数据。
         // 其实数据写入到临时存储缓冲区中。
         fw.write("haha");
         // 进行刷新,将数据直接写到目的地。
         fw.flush();
         // 关闭资源,在关闭前,会调用flush刷新缓冲中的数据到目的地。
      } catch (IOException e) {
         e.printStackTrace();
      } finally {
         if (fw != null) {
            try {
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
         }
      }
   }
}