字符流:
- 字符输出流:Writer,对文件的操作使用子类:FileWriter
- 字符输入流:Reader,对文件的操作使用子类:FileReader
- 每次操作单位是一个字符
- 文件字符操作流会自带缓存,默认大小为1024字节,在缓存满后,或手动刷新缓存,或关闭流时会把数据写入文件
-
- 如何选择使用字节流还是字符流:
- 一般操作非文本文件时,使用字节流,操作文本文件时,建议使用字符流
-
- 字节流的内部实现还是字节流
示例
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
public class CharStreamDemo {
public static void main(String[] args) {
out();
in();
}
//字符输出流
public static void out() {
//确定目标文件
File file=new File("/Users/a10.11.5/test/123.txt");
try {
//构建文件输出流
Writer out=new FileWriter(file,true);
//输出内容
out.write(",村花到我家");
//结束流
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//字符输入流
public static void in() {
//确定目标文件
File file=new File("/Users/a10.11.5/test/123.txt");
try {
//创建文件入流
Reader in =new FileReader(file);
char[]cs=new char[1];
int len = -1;
StringBuilder buf=new StringBuilder();
while ((len=in.read(cs))!=-1) {
buf.append(cs,0,len);
}
System.out.println(buf);
//结束流
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}