字符流
字符流的特点:
字符流是为了方便我们读写文本文件,在换句话说,字符流只能读写文本文件,其他类型的文件读写不了。
OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的 charset 将要写入流中的字符编码成字节。它使用的字符集可以由名称指定或显式给定,否则将接受平台默认的字符集。
字符流之输入流:
InputStreamReader:
使用编码表对字节流中的数据进行解码
InputStreamReader中的构造方法:
public InputStreamReader(InputStream in):
传参数需要传InputStream的子类对象,即InputStreamWriter out = new InputStreamWriter(new FileInputStream(“a.txt”));
public InputStreamReader(InputStream in,String charsetName):
传参数需要传InputStream的子类对象,即InputStreamWriter out = new InputStreamWriter(new FileInputStream(“a.txt”),”UTF-8”);
InputStreamReader中的方法:
public int read() :
一次读取一个字符
public int read(char[] cbuf)
一次读取一个字符数组
in.write(new char[]{‘你’,‘a’,‘b’});
BufferedReader(高效的字符流):
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
字符流之输出流:
OutputStreamWriter:
字符输出流,是字节输出流+编码表组成
OutputStreamWriter中的构造方法:
public OutputStreamWriter(OutputStream out):
传参数需要传OutputStream的子类对象,即OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(“a.txt”));
public OutputStreamWriter(OutputStream out,String charsetName):
传参数需要传OutputStream的子类对象+编码表类型,即OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(“a.txt”) ,“UTF-8”)
public void write(int c) :
一次写入一个字符
out.write(‘a’);
public void write(char[] cbuf):
一次写入一个字符数组
out.write(new char[]{‘你’,‘a’,‘b’});
public void write(char[] cbuf,int off,int len):
一次写入字符数组的一部分
out.write(new char[]{‘你’, ‘a’, ‘b’},0,1);
public void write(String str):
一次写入一个字符串
out.write(“我爱你”);
public void write(String str,int off,int len):
一次写入一个字符串的一部分
out.write(“我爱你”,0,1);
public void flush():
字符流必须使用 out.flush来刷新
BufferedWriter(高效的字符流):
高效写入,底层代码实现了缓冲区数组
public void newLine():
各个平台使用的换行符号不同有的是\r\n 有的是\r 有的是\n,因此使用BuffereWriter中的newLine来进行兼容各个平台的换行