1.为什么出现字符流?
因为字节流操作中文不是特别方便,所以Java就提供字符流
2.字符流包括
3.字符输入流代码
public static void main(String[] args) throws IOException {
//字符输入流Reader
File f1=new File("d:/a.txt");
//每次读取一个字符(中文占一个字符)
Reader in=new FileReader(f1);
//int n=in.read();//所有的中文符,每次读取一个字符,把该字符转换成对应编码值
// System.out.println((char)n);
//
// int n1=in.read();
// System.out.println((char)n1);
//使用缓冲区读取多个字符
char[] buffer=new char[10];
int n= in.read(buffer);//每次最多读取buffer数组个长度字符,把读取到的字符存入buffer数组中,返回的是实际读取到的字符串
System.out.println(n);
System.out.println(Arrays.toString(buffer));
char[] buffer1=new char[10];
int n1= in.read(buffer1);//每次最多读取buffer数组个长度字符,把读取到的字符存入buffer数组中,返回的是实际读取到的字符串
System.out.println(n1);
System.out.println(Arrays.toString(buffer1));
}
字符输出流
public static void main(String[] args) throws IOException {
File f2=new File("D:/b.txt");
if (!f2.exists()){
f2.createNewFile();
}
//定义一个字符输出流,向f2文件写入内容
Writer out=new FileWriter(f2);
out.write(97);//转输出字符
out.write((int)'对');//强转数字输出
out.write("我是中国人!!!");//输出字符
char[] ch={'和','好','吧','!'};
out.write(ch);
out.flush();//刷新 字符输出流有缓冲区的概念,需要刷新缓冲区才能更新到硬盘
out.close();
}
flush方法和close方法的区别:close释放资源前进行一次刷新流,close执行后不能在写内容;而flush是刷新流,执行完毕依旧可以写内容;
4.综合案例
import java.io.*;
import java.util.Arrays;
public class ReaderTest006 {
public static void main(String[] args) throws IOException {
//定义File对象
File f1=new File("D:/a.txt");
//字符输入流Reader
Reader in=new FileReader(f1);
//使用缓冲区读取多个字符
char[] buffer=new char[10];
int n=in.read(buffer);//每次最多读取buffer数组长个字符,把读取到的字符存入buffer数组中,返回的是实际读取的字符数
System.out.println(n);
System.out.println(Arrays.toString(buffer));
char[] buffer1=new char[10];
int n1=in.read(buffer1);//每次最多读取buffer数组长个字符,把读取到的字符存入buffer数组中,返回的是实际读取到的字符数
System.out.println(n1);
System.out.println(Arrays.toString(buffer1));
}
}