1.字符流的介绍: 字符流 = 字节流 + 编码表 2.中文的字节存储方式: 用字节流复制文本文件时,文本文件也会有中文,但是没有问题,原因是最终底层操作会自动进行字节拼接成中文
1、使用字符流类 读文本文件的基本步骤:
- 引入相关类
- 构造一个 BufferedReader 对象
- 利用 BufferedReader 类的方法读取文本文件数据
- 关闭相关的流对象
字符流写数据的几种方式
刷新、关闭方法
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
OutputStreamWriter out= new OutputStreamWriter(new FileOutputStream("d://a.txt"));
//void write(int c)://写一个字符
out.write(97);
out.write(98);
out.write(99);
//void writ(char[] cbuf)://写入一个字符数组
char[] chs = {'a', 'b', 'c', 'd', 'e'};
out.write(chs);
//void write(char[] cbuf, int off, int len):写入字符数组的一部分
out.write(chs, 0, chs.length);
out.write(chs, 1, 3);
//void write(String str):写一个字符串
out.write("abcde");
//void write(String str, int off, int len):写一个字符串的一部分
out.write("abcde", 0, "abcde".length());
out.write("abcde", 1, 3);
//释放资源
out.close();
}
}
字符流读数据的第2种方式
方法介绍
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
InputStreamReader in= new InputStreamReader(new FileInputStream("D://a.txt"));
//int read():一次读一个字符数据
int ch;
while ((ch=in.read())!=-1) {
System.out.print((char)ch);
}
//int read(char[] cbuf):一次读一个字符数组数据
char[] chs = new char[1024];
int len;
while ((len = in.read(chs)) != -1) {
System.out.print(new String(chs, 0, len));
}
//释放资源
in.close();
}
}
字符缓冲流
字符缓冲流介绍
BufferedWriter: 将文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入,可以指定缓冲区大小,或者可以接受默认大小。默认值足够大,可用于大多数用途
BufferedReader: 从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取,可以指定缓冲区大小,或者可以使用默认大小。 默认值足够大,可用于大多数用途
构造方法
public class BufferedStreamDemo01 {
public static void main(String[] args) throws IOException {
//BufferedWriter(Writer out)
BufferedWriter b1= new BufferedWriter(new FileWriter("D://w.txt"));
b1.write("hello\r\n");
b1.write("world\r\n");
b1.close();
//BufferedReader(Reader in)
BufferedReader b2= new BufferedReader(new FileReader("D://w.txt"));
//一次读取一个字符数据
int ch;
while ((ch=b2.read())!=-1) {
System.out.print((char)ch);
}
//一次读取一个字符数组数据
char[] chs = new char[1024];
int len;
while ((len=b2.read(chs))!=-1) {
System.out.print(new String(chs,0,len));
}
b2.close();
}
}