文件字符流(FileReader/FileWriter)针对文件字符的操作,不同于文件字节流(FileInputStream/FileOutputStream)。它是针对字符来进行操作的,因此他在处理纯字符集(纯文本)时十分的方便。而文件字节流能够处理音频,视频等等除纯文本以外的文件类型,因为他们是以字节为单位的。但是文件字符流不能够处理字节,它只能处理以字符为单位的文件。因此他不能处理音频,视频等以字节为单位的文件。
一.文件字符输入流(FileReader)
文件字符输入流是将文件中的字符读取到程序中。
文件字符流的操作步骤与文件字节流一样:
1.创建源
2.选择流
3.具体操作
4.释放资源
以文件字符流操作纯文本文件,可以很好的解决乱码的问题。具体代码如下:
import java.io.*;
/**
* 测试Reader(对字符进行操作)
* 字符数组-->字符串
* Reader:read()
*/
public class TestReader {
public static void main(String[] args) {
//创建源
File file = new File("abc.txt");
//选择流
Reader reader = null;
try {
reader = new FileReader(file);
//操作
char[] flush = new char[1024]; //缓冲容器 InputStream:byte[](字节数组) Reader:char[](字符数组)
int len = -1; //接收长度
try {
while ((len = reader.read(flush))!=-1){
//字符数组-->字符串
String str = new String(flush,0,len);
System.out.print(str);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
if (reader!=null){
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
以字符数组为单位进行操作,因此定义读取的字符数组char[],每次读取1024个字符,然后转化成字符串(String str = new String(flush,0,len))在进行写出。
二.文件字符输出流(FileWriter)
文件字符输出流是将程序中的字符串以字符形式写出到文件中去。具体代码如下:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
/**
* 测试Writer(对字符进行操作)
* 字符串-->字符数组
*/
public class TestWriter {
public static void main(String[] args) {
//创建源
File file = new File("dest.txt");
//选择流
Writer writer = null;
try {
writer = new FileWriter(file,true);
//操作
//写法一
// String str = "问君能有几多愁?恰似一江春水向东流。";
// //字符串-->字符数组
// char[] datas = str.toCharArray();
// writer.write(datas,0,datas.length);
//写法二
// String str = "问君能有几多愁?恰似一江春水向东流。";
// writer.write("\t"+str);
//写法三
String str = "\n问君能有几多愁?恰似没穿秋裤遇寒流。";
String str1 = "\n笑渐不闻声渐悄,多情却被无情恼";
writer.append(str).append(str1);
writer.flush();
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
if (writer!=null){
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
FileWriter是将字符串转化为字符数组(char[] datas = str.toCharArray())然后进行写出,如果进行多个字符串的写出,可以使用writer.append()进行追加,这样可以一次性写出多条字符串语句到文件中。