Writer (字符流写出)
Writer (字符流写出)
java.io.Writer
是字符流写出流的父类,而且是一个抽象类。不能创建对象,只能学习他的共性方法。
Writer常用实现类的继承关系
- java.lang.Object
java.io.Writer
- java.io.OutputStreamWriter
java.io.FileWriter
java.io.BufferedWriter
java.io.PrintWriter
- java.io.OutputStreamWriter
Writer常用的三个实现类: FileWroter, BufferedWriter 和 PrintWriter
共性方法(子类通用)
修饰符和返回值 | 方法 | 说明 |
---|---|---|
abstract void | close() | 关闭此流,但要先刷新它。(关闭前会先flush) |
abstract void | flush() | 刷新该流的缓冲 |
void | writer(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) | 写入字符串的某一部分。 |
FileWriter子类
构造方法
方法 | 说明 |
---|---|
FileWriter(File file) | 传入一个File对象 |
FileWriter(String fileName) | 传入一个文件的绝对路径 |
FileWriter(String fileName, boolean append) | append是否为追加,true是追加, false是覆盖, 默认false |
FileWriter(File file, boolean append) | append是否为追加,true是追加, false是覆盖, 默认false |
使用实例:
在文件中写入字符串:
try {
String path = "D:\\DEV\\eclipse\\workspace\\day13\\testOut.txt";
// 1. 创建对象
// 参数true是追加, 不写或者为false是覆盖
Writer out = new FileWriter(path, true);
// 第二种创建对象方式
// Writer out = new FileWriter(new File(path))
// 2. 开始写出
out.write("你好");
// 3. 释放资源
out.close();
} catch (IOException e) {
e.printStackTrace();
}
BufferedWriter子类
将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。 可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了(默认8192--8KB)
构造方法
方法 | 说明 |
---|---|
BufferedWriter(Writer out) | 一般传入FileWriter对象 |
使用实例
try {
// 1. 创建对象
String path = "D:\\DEV\\eclipse\\workspace\\day13\\testOut.txt";
Writer out = new BufferedWriter(
// 参数true是追加, 不写或者为false是覆盖
new FileWriter(path, true)
);
// 2. 开始写出
out.write("hello word");
out.flush(); // 用来把缓冲区的数据刷新到磁盘中展示
// 3. 关闭资源
out.close(); // 执行flush() 后再释放资源
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter子类
提供了按行写出到文件的方法
常用构造方法
方法 | 说明 |
---|---|
PrintWriter(File file) | 传入一个File对象 |
PrintWriter(String path) | 传入一个文件路径 |
PrintWriter(Writer out) | 传入Writer类型 |
PrintWriter(OutputStream out) | 传入OutputStream类型 |
常用方法
返回值 | 方法 | 说明 |
---|---|---|
void | println(重载参数) | 写出到文件一行, 可以是基本类型参数或者对象等, 一般常用String, (追加模式) |
代码实例
// 读取一行, 写出一行
// 读取a.txt一行, 写入到a_out.txt一行
// 乱码问题使用转换流解决
public class Test5_Line {
public static void main(String[] args) throws IOException {
// 读取流
BufferedReader in = new BufferedReader(
new FileReader("D:\\a.txt")
);
// 写出流
PrintWriter out = new PrintWriter(
new FileWriter("D:\\a_out.txt")
);
String line = "";
while ((line = in.readLine()) != null) {
System.out.println(line); // 读一行
out.println(line); // 写一行
}
in.close();
out.close();
}
}