java IO流之FileWriter 字符输出流 构造方法 实例化 异常处理

FileWriter

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

文件是否可用或是否可以被创建取决于底层平台。特别是某些平台一次只允许一个 FileWriter(或其他文件写入对象)打开文件进行写入。在这种情况下,如果所涉及的文件已经打开,则此类中的构造方法将失败。

FileWriter 用于写入字符流。要写入原始字节流,请考虑使用 FileOutputStream

构造方法

  • FileWriter(FileDescriptor fd) 构造与某个文件描述符相关联的 FileWriter 对象。

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

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

  • FileWriter(File file, boolean append) 根据给定的 File 对象构造一个 FileWriter 对象。
  • FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
    • append - 一个 boolean 值,如果为 true,则将数据写入文件末尾处,而不是写入文件开始处。

如果目标文件不存在的话,那么会自动创建此文件。
如果目标文件存在的话:
new FileWriter(f) 相当于对原文件进行覆盖操作。
new FileWriter(f, false) 相当于对源文件进行覆盖操作。不是追加。
new FileWriter(f, true) 对原来的文件进行追加,写入文件末尾处,而不是覆盖。

方法摘要

  • 从类 java.io.OutputStreamWriter 继承的方法 close, flush, getEncoding, write, write, write
  • 从类 java.io.Writer 继承的方法 append, append, append, write, write
  • 从类 java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

实例化

  1. 选择目标文件,创建一个File对象

    File f = new File("IOStream/src/testfile/test.txt");
    
  2. 创建一个FileWriter的流的对象,确定覆盖还是追加

    FileWriter fw = new FileWriter(f);
    
  3. 输出流

    1. 字符形式输出

      String str = "hello world";
      //3.1一个字符一个字符的往外输出:
      for (int i = 0 ;i < str.length();i++){
      fw.write(str.charAt(i));
      }
      
    2. 数组形式输出

      String str = "hello world";
      //3.2缓冲数组向外输出
      char[] chars = str.toCharArray();
      fw.write(chars);
      
  4. 关闭流

    fw.close();
    

综合程序

此时未进行try-catch异常处理

public class FileWrit {
    public static void main(String[] args) throws IOException {
        //1.选择目标文件,创建一个File对象
        File f = new File("IOStream/src/testfile/test.txt");
        //2.创建一个FileWriter的流的对象,FileWriter管怼到文件上去:
        FileWriter fw = new FileWriter(f);
        //3.缓冲数组向外输出:
        String str = "hello world";
        char[] chars = str.toCharArray();
        fw.write(chars);
        //4.关闭流:
        fw.close();
    }
}
try-catch-finally
public class FileWritTC {
    public static void main(String[] args){
        //1.选择目标文件,创建一个File对象
        File f = new File("IOStream/src/testfile/test.txt");
        //2.创建一个FileWriter的流的对象,FileWriter管怼到文件上去:
        FileWriter fw = null;
        try {
            fw = new FileWriter(f);
            //3.开始输出:
            String str = "hello world";
            //缓冲数组向外输出
            char[] chars = str.toCharArray();
            fw.write(chars);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            //4.关闭流:
            try {
                assert fw != null;
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
try-with-resource
public class FileWritTC {
    public static void main(String[] args){
        //1.选择目标文件,创建一个File对象
        File f = new File("IOStream/src/testfile/test.txt");
        //2.创建一个FileWriter的流的对象,FileWriter管怼到文件上去:
        try (FileWriter fw = new FileWriter(f);){
            //3.开始输出:
            String str = "hello world";
            //缓冲数组向外输出
            char[] chars = str.toCharArray();
            fw.write(chars);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
posted @ 2021-08-14 07:40  SKPrimin  阅读(175)  评论(0编辑  收藏  举报