文件字符流
FileReader/FileWriter
文件字节流可以处理所有的文件,但是字节流不能很好的处理Unicode字符,经常会出现“乱码”现象。
处理文本文件,一般可以使用文件字符流,它以字符为单位进行操作。
1、文件字符输入流Reader
import java.io.*;
/**
* 文件字符输入流Reader
* 1、创建源
* 2、选择流
* 3、操作:分段读取
* 4、释放资源
*/
public class IOTest05 {
public static void main(String[] args) throws IOException {
//1、创建源
File src = new File("abc.txt");
//2、选择流
Reader reader = null;
try{
reader = new FileReader(src);
//3、操作:分段读取
//按字符读取不会出现乱码
char[] flush = new char[1024];//缓冲容器//字节
//char[] flush = new char[2];//缓冲容器//字节
int len = -1;//接受长度
while((len = reader.read(flush))!=-1){
//字符数组->字符串
String str = new String(flush,0,len);
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//4、释放资源
try{
if(null!=reader){
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
2、文件字符输出流Writer
import java.io.*;
/**
* 文件字符输出流Writer
* 1、创建源
* 2、选择流
* 3、操作:写入
* 4、释放资源
*/
public class IOTest06 {
public static void main(String[] args) {
//1、创建源
File dest = new File("dest.txt");
//2、选择流
Writer writer = null;
try{
writer = new FileWriter(dest,true);//改为true可以追加
//3、操作:写入
//写法一
/*
String msg = "IO is so easy\r\n尚学堂欢迎你";
char[] datas = msg.toCharArray();//字符串->字符数组
writer.write(datas,0,datas.length);*/
//写法二
/*
String msg = "IO is so easy\r\n尚学堂欢迎你";
writer.write(msg);
writer.write("add");
writer.flush();*/
//写法三
writer.append("IO is so easy\r\n").append("尚学堂欢迎你");
writer.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//4、释放资源
try{
if(null != writer){
writer.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}