与字节流相比字符流更适合读取文本数据在字节流中汉字占三个字符,在字符流中汉字占一个字符
单个字符读取如下:
public class FileReaderDemo01 {
public static void main(String[] args) throws Exception {
// 目标:每次读取一个字符。
// 1、创建一个字符输入流管道与源文件接通
Reader fr = new FileReader("file-io-app\\src\\data06.txt");
// 2、读取一个字符返回,没有可读的字符了返回-1
// int code = fr.read();
// System.out.print((char)code);
//
// int code1 = fr.read();
// System.out.print((char)code1);
// 3、使用循环读取字符
int code;
while ((code = fr.read()) != -1){
System.out.print((char) code);
}
}
}
读取字符数组如下;
import java.io.FileReader;
import java.io.Reader;
public class FileReaderDemo02 {
public static void main(String[] args) throws Exception {
// 1、创建一个文件字符输入流与源文件接通
Reader fr = new FileReader("file-io-app/src/data07.txt");
// 2、用循环,每次读取一个字符数组的数据。 1024 + 1024 + 8
char[] buffer = new char[1024]; // 1K字符
int len;
while ((len = fr.read(buffer)) != -1) {
String rs = new String(buffer, 0, len);
System.out.print(rs);
}
}
}
如使用数组形式来读取文本字符用以下方法可以将未读取的数组第二次读取出来:
如图上显示,第一次读取的数组为10,可文本数据超出数组数据,剩下的数据可以通过new String(0,n)0到n(从零开始到n结束)第二次输出时会显示出剩下的数据
若如下不给其文本数据的长度则二次输出会接着上次继续输出到10