首页 > 代码库 > 字符流
字符流
字符流是可以直接读写字符的IO流
组成: 字节流 + 编码表
** 常见的编码表: ASCII , GBK , UTF-8
** 字符输入流 Reader
** 字符输出流 Writer
InputStreamReader(转换输入流)
* 构造方法:
public InputStreamReader(InputStream in)
public InputStreamReader(InputStream in , String charsetName)
* 成员方法:
public int read() ;
public int read(char[] chs) ;
** OutputStreamWriter(转换输出流)
* 构造方法:
public OutputStreamWriter(OutputStream out)
public OutputStreamWriter(OutputStream out , String charsetName)
* 成员方法:
public void write(int ch) ;
public void write(char[] chs) ;
public void write(char[] chs , int off , int len) ;
public void write(String s) ;
public void write(String s , int off , int len) ;
** FileReader
** FileWriter
高效的字符输入流 BufferedReader
* 构造方法: public BufferedReader(Reader r)
* 特有的功能: public String readLine() ;
高效的字符输出流 BufferedWriter
* 构造方法: public BufferedWriter(Writer w) ;
* 特有的功能: public void newLine() ;
什么情况下使用字符流
* 字符流也可以拷贝文本文件, 但不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.
* 程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流
* 读取的时候是按照字符的大小读取的,不会出现半个中文
* 写出的时候可以直接将字符串写出,不用转换为字节数组
字符流是否可以拷贝非纯文本的文件
* 不可以拷贝非纯文本的文件
* 因为在读的时候会将字节转换为字符,在转换过程中,可能找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节写出去
* 如果是?,直接写出,这样写出之后的文件就乱了,看不了了
字符流