【IO流系列】FileWriter 字符输出流

1. 概述

java.io.FileWriter 类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
FileWriter 是用于写入字符数据到文件的字符输出流。

2. 作用

  1. 写入字符数据FileWriter 可以将字符数据写入到文件中。通过 write() 方法,可以逐个字符或批量字符(字符数组、字符串)地向文件写入数据。

  2. 创建新文件:如果指定的文件不存在,FileWriter 在默认情况下会创建一个新的文件,并将字符数据写入其中。这为创建和写入新的文本文件提供了便利。

  3. 追加写入:除了默认覆盖写入外,FileWriter 还支持以追加写入的方式将字符数据添加到已有文件的末尾。通过指定构造方法中的 append 参数为 true,可以实现追加写入的功能。

  4. 文本文件处理FileWriter 常用于处理文本文件,例如写入日志信息、配置文件、文本内容等。它提供了一种简单而有效的方式,用于操作和修改文本文件的内容。

  5. 字符数据流处理FileWriter 继承自 Writer 类,因此除了写入字符数据到文件外,还可以应用 Writer 提供的其他方法来处理字符数据流,如刷新缓冲区、关闭流等操作。

  6. 字符编码指定:通过构造方法可以指定字符编码,以确保在文件写入和读取时所用的字符编码一致,防止出现乱码等问题。

  7. 资源释放:在完成文件写入操作后,应该及时调用 close() 方法关闭 FileWriter,释放相关资源,避免资源泄露和文件锁定问题。

3. 方法

  • 构造方法

    构造方法说明
    public FileWriter(File file)创建字符输出流关联本地文件
    public FileWriter(String pathname)创建字符输出流关联本地文件
    public FileWriter(File file, boolean append)创建字符输出流关联本地文件,续写
    public FileWriter(String pathname, boolean append)创建字符输出流关联本地文件,续写
  1. public FileWriter(File file)

    • 说明: 创建字符输出流关联本地文件。
  2. public FileWriter(String pathname)

    • 说明: 创建字符输出流关联本地文件。
  3. public FileWriter(File file, boolean append)

    • 说明: 创建字符输出流关联本地文件,并选择是否续写模式。
  4. public FileWriter(String pathname, boolean append)

    • 说明: 创建字符输出流关联本地文件,并选择是否续写模式。
  • 成员方法

    成员方法说明
    void write(int c)写出一个字符
    void write(String str)写出一个字符串
    void write(String str, int off, int len)写出一个字符串的一部分
    void write(char[] cbuf)写出一个字符数组
    void write(char[] cbuf, int off, int len)写出字符数组的一部分
  1. void write(int c)

    • 说明: 写出一个字符。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      writer.write('A');
      writer.close();
      
  2. void write(String str)

    • 说明: 写出一个字符串。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      writer.write("Hello, FileWriter!");
      writer.close();
      
  3. void write(String str, int off, int len)

    • 说明: 写出一个字符串的一部分。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      String str = "Hello, FileWriter!";
      writer.write(str, 0, 5); // 写出 "Hello"
      writer.close();
      
  4. void write(char[] cbuf)

    • 说明: 写出一个字符数组。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      char[] cbuf = {'H', 'e', 'l', 'l', 'o'};
      writer.write(cbuf);
      writer.close();
      
  5. void write(char[] cbuf, int off, int len)

    • 说明: 写出字符数组的一部分。
    • 示例:
      FileWriter writer = new FileWriter("output.txt");
      char[] cbuf = {'H', 'e', 'l', 'l', 'o'};
      writer.write(cbuf, 0, 3); // 写出 "Hel"
      writer.close();
      

4. 细节

FileWriter书写细节

  1. 创建字符输出流对象
    • 细节1:参数是字符串表示的路径或者File对象都是可以的

    • 细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的

    • 细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关

  2. 写数据
    • 细节: 如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
  3. 释放资源
    • 细节:每次使用完流之后都要释放资源

5. 代码示例

  • 代码示例
    package text.IOStream.FileWrite.FileWrite01;
    
    import java.io.FileWriter;
    import java.io.IOException;
    
    /* FileWriter
    FileWriter构造方法
    | 构造方法                                          | 说明                             |
    | ------------------------------------------------- | -------------------------------- |
    | public Filewriter(File file)                      | 创建字符输出流关联本地文件       |
    | public FileWriter(string pathname)                | 创建字符输出流关联本地文件       |
    | public FileWriter(File file, boolean append)      | 创建字符输出流关联本地文件,续写 |
    | public FileWriter(string pathname,boolean append) | 创建字符输出流关联本地文件,续写 |
    
    FileWriter成员方法
    | 成员方法                               | 说明                   |
    | -------------------------------------- | ---------------------- |
    | void write(int c)                      | 写出一个字符           |
    | void write(string str)                 | 写出一个字符串         |
    | void write(string str,int off,int len) | 写出一个字符串的一部分 |
    | void write(char[] cbuf)                | 写出一个字符数组       |
    | void write(char[lcbuf,int off,int len) | 写出字符数组的一部分   |
    
    FileWriter书写细节
    1.创建字符输出流对象
        细节1:参数是字符串表示的路径或者File对象都是可以的
        细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关
    2.写数据
        细节: 如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
    3.释放资源
        细节:每次使用完流之后都要释放资源
     */
    public class FileWrite01 {
        public static void main(String[] args) throws IOException {
            //创建对象
            FileWriter fw = new FileWriter("D:\\JavaCode\\code\\codeText01\\src\\text\\IOStream\\FileWrite\\FileWrite01\\a.txt");
    
            //读取数据
            fw.write("祝愿大家成功上岸!");
    
            //释放资源
            fw.close();
        }
    }
    
    
  • 输出结果
    在这里插入图片描述

6. 注意事项

  1. 字符输出流与本地文件之间的字符编码关系:字符输出流将字符写入文件时,使用的是系统默认的字符编码。如果需要指定特定的字符编码,可以考虑使用 OutputStreamWriter 包装 FileWriter。

  2. 写出字符时的数据处理:在写出字符数据时,要注意数据的处理方式,可以一次写出一个字符、一个字符串、一个字符数组等,确保数据写入文件的正确性。

  3. 文件路径及文件权限:要确保指定的文件路径正确且有相应的文件权限,否则可能导致文件写入失败。

  4. 文件续写操作:如果需要在已有文件的基础上进行续写操作,可以使用带有 boolean 参数的构造方法来指定是否是续写模式。

  5. 关闭流资源:在使用完字符输出流后,务必关闭流资源,以释放系统资源并确保数据写入文件。可以使用 try-with-resource 语句来自动关闭资源。

  6. 异常处理:在使用 FileWriter 时,要考虑可能出现的 IO 异常情况,合理处理异常以确保程序的稳定性和可靠性。

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您可以使用字符来复制文件。首先,您需要使用 FileReader 和 FileWriter 类来创建源文件和目标文件的字符。然后,您可以使用 BufferedReader 和 BufferedWriter 类来读取和写入文件内容。 下面是一个示例代码片段,演示如何使用字符复制文件: ```java import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class FileCopy { public static void main(String[] args) { String sourceFile = "source.txt"; String destinationFile = "destination.txt"; try (BufferedReader reader = new BufferedReader(new FileReader(sourceFile)); BufferedWriter writer = new BufferedWriter(new FileWriter(destinationFile))) { String line; while ((line = reader.readLine()) != null) { writer.write(line); writer.newLine(); } System.out.println("文件复制成功!"); } catch (IOException e) { System.out.println("文件复制失败:" + e.getMessage()); } } } ``` 在上述示例中,我们使用 FileReader 和 FileWriter 打开源文件和目标文件的字符。然后,我们使用 BufferedReader 的 readLine() 方法读取源文件的每一行,并使用 BufferedWriter 的 write() 和 newLine() 方法将每行写入目标文件。 请注意,在 try-with-resources 语句中创建的字符会自动关闭,无需手动关闭。这是因为 BufferedReader 和 BufferedWriter 类都实现了 AutoCloseable 接口。 希望这可以帮助到您!如有任何疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷小洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值