1. 概述
java.io.FileWriter
类是写出字符到文件的便利类。构造时使用系统默认的字符编码和默认字节缓冲区。
FileWriter
是用于写入字符数据到文件的字符输出流。
2. 作用
-
写入字符数据:
FileWriter
可以将字符数据写入到文件中。通过write()
方法,可以逐个字符或批量字符(字符数组、字符串)地向文件写入数据。 -
创建新文件:如果指定的文件不存在,
FileWriter
在默认情况下会创建一个新的文件,并将字符数据写入其中。这为创建和写入新的文本文件提供了便利。 -
追加写入:除了默认覆盖写入外,
FileWriter
还支持以追加写入的方式将字符数据添加到已有文件的末尾。通过指定构造方法中的append
参数为true
,可以实现追加写入的功能。 -
文本文件处理:
FileWriter
常用于处理文本文件,例如写入日志信息、配置文件、文本内容等。它提供了一种简单而有效的方式,用于操作和修改文本文件的内容。 -
字符数据流处理:
FileWriter
继承自Writer
类,因此除了写入字符数据到文件外,还可以应用Writer
提供的其他方法来处理字符数据流,如刷新缓冲区、关闭流等操作。 -
字符编码指定:通过构造方法可以指定字符编码,以确保在文件写入和读取时所用的字符编码一致,防止出现乱码等问题。
-
资源释放:在完成文件写入操作后,应该及时调用
close()
方法关闭FileWriter
,释放相关资源,避免资源泄露和文件锁定问题。
3. 方法
-
构造方法
构造方法 说明 public FileWriter(File file) 创建字符输出流关联本地文件 public FileWriter(String pathname) 创建字符输出流关联本地文件 public FileWriter(File file, boolean append) 创建字符输出流关联本地文件,续写 public FileWriter(String pathname, boolean append) 创建字符输出流关联本地文件,续写
-
public FileWriter(File file)
- 说明: 创建字符输出流关联本地文件。
-
public FileWriter(String pathname)
- 说明: 创建字符输出流关联本地文件。
-
public FileWriter(File file, boolean append)
- 说明: 创建字符输出流关联本地文件,并选择是否续写模式。
-
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) 写出字符数组的一部分
-
void write(int c)
- 说明: 写出一个字符。
- 示例:
FileWriter writer = new FileWriter("output.txt"); writer.write('A'); writer.close();
-
void write(String str)
- 说明: 写出一个字符串。
- 示例:
FileWriter writer = new FileWriter("output.txt"); writer.write("Hello, FileWriter!"); writer.close();
-
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();
-
void write(char[] cbuf)
- 说明: 写出一个字符数组。
- 示例:
FileWriter writer = new FileWriter("output.txt"); char[] cbuf = {'H', 'e', 'l', 'l', 'o'}; writer.write(cbuf); writer.close();
-
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:参数是字符串表示的路径或者File对象都是可以的
-
细节2:如果文件不存在会创建一个新的文件,但是要保证父级路径是存在的
-
细节3:如果文件已经存在,则会清空文件,如果不想清空可以打开续写开关
-
- 写数据
- 细节: 如果write方法的参数是整数,但是实际上写到本地文件中的是整数在字符集上对应的字符
- 释放资源
- 细节:每次使用完流之后都要释放资源
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. 注意事项
-
字符输出流与本地文件之间的字符编码关系:字符输出流将字符写入文件时,使用的是系统默认的字符编码。如果需要指定特定的字符编码,可以考虑使用 OutputStreamWriter 包装 FileWriter。
-
写出字符时的数据处理:在写出字符数据时,要注意数据的处理方式,可以一次写出一个字符、一个字符串、一个字符数组等,确保数据写入文件的正确性。
-
文件路径及文件权限:要确保指定的文件路径正确且有相应的文件权限,否则可能导致文件写入失败。
-
文件续写操作:如果需要在已有文件的基础上进行续写操作,可以使用带有 boolean 参数的构造方法来指定是否是续写模式。
-
关闭流资源:在使用完字符输出流后,务必关闭流资源,以释放系统资源并确保数据写入文件。可以使用 try-with-resource 语句来自动关闭资源。
-
异常处理:在使用 FileWriter 时,要考虑可能出现的 IO 异常情况,合理处理异常以确保程序的稳定性和可靠性。