Writer和Reader类
文章目录
前言
在java中提供了针对字符输入输出操作的两个类,分别是Writer字符输出流类,Reader字符输入流类。
Writer字符输出流类
Writer类为字符输出流类,本身也是一个抽象类,如果要使用此类,则必须通过其子类FileWriter为其进行实例化操作。FileWriter类为Writer类的子类
主要方法
序号 | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public abstract void close() throws IOException | 普通 | 关闭输出流 |
2 | public void write(String str) throws IOException | 普通 | 将字符串输出 |
3 | public void write(char[] cbuf) throws IOException | 普通 | 将字符数组输出 |
4 | public abstract void flush() throws IOException | 普通 | 强制性清空缓存 |
案例代码
向文件中写入数据
package chapter_twelve;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class WriterDemo01 {
public static void main(String[] args) throws Exception{
//第一步,使用File类找到一个文件
File file = new File("D:" + File.separator + "test.txt");
//第二步,通过其子类实例化父类对象
Writer writer = new FileWriter(file);
//第三步,进行写的操作
String string = "Hello World!!!";
writer.write(string);
//第四步,关闭输出流
writer.close();
}
}
运行结果
向文件中追加数据
package chapter_twelve;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class WriterDemo02 {
public static void main(String[] args) throws Exception{
//第一步,使用File类找到一个文件
File file = new File("D:" + File.separator + "test.txt");
//第二步,通过子类实例化父类对象
Writer writer = new FileWriter(file,true);
//第三步,进行写的操作
writer.write("\r\nGao Li Wei!!!");
//第四步,关闭字符输出流
writer.close();
}
}
运行结果
Reader字符输入流类
Reader也是一个抽象类,使用字符的方式从文件中取出数据,通过其子类FileReader为其进行实例化操作。
主要方法
序号 | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public abstract void close() throws IOException | 普通 | 关闭输出流 |
2 | public int read() throws IOException | 普通 | 读取单个字符 |
3 | public int read(char[] cbuf) throws IOException | 普通 | 将内容读到字符数组中,返回读入的长度 |
案例代码
从文件中读取内容
package chapter_twelve;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class ReaderDemo01 {
public static void main(String[] args) throws Exception{
//第一步,实例化文件类对象File
File file = new File("D:" + File.separator + "test.txt");
//第二步,通过对象的向上转型实例化字符输入流Reader
Reader reader = new FileReader(file);
//第三步,以字符输入流读取文件中数据
char[] chars = new char[1024];
int len = reader.read(chars);
System.out.println(new String(chars,0,len));
//第四步,关闭字符输入流Reader
reader.close();
}
}
运行结果
Hello World!!!
Gao Li Wei!!!
使用循环的方式读取内容
package chapter_twelve;
import java.io.File;
import java.io.FileReader;
import java.io.Reader;
public class ReaderDemo02 {
public static void main(String[] args) throws Exception{
//第一步,实例化文件类对象
File file = new File("D:" + File.separator + "test.txt");
//第二步,定义声明字符输出流,并以对象的向上转型为Reader类实例化
Reader reader = new FileReader(file);
//第三步,读取文件内的所有数据
char[] chars = new char[1024];
int temp = 0, len = 0;
while((temp = reader.read()) != -1){
chars[len++] = (char)temp;
}
System.out.println(new String(chars,0,len));
//第四步,关闭字符输入流
reader.close();
}
}
运行结果
Hello World!!!
Gao Li Wei!!!
总结
使用字符输出输入流可以方便地对字符串、字符数组、字符直接进行操作,而不必手动(系统会自动转换)的转换为字节进行输入输出操作,总之,字符流也是一种重要的应用,加油!