首页 > 代码库 > 字符流

字符流

字符流是可以直接读写字符的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() ;

 


什么情况下使用字符流

* 字符流也可以拷贝文本文件, 但不推荐使用. 因为读取时会把字节转为字符, 写出时还要把字符转回字节.

* 程序需要读取一段文本, 或者需要写出一段文本的时候可以使用字符流

* 读取的时候是按照字符的大小读取的,不会出现半个中文

* 写出的时候可以直接将字符串写出,不用转换为字节数组

 

 


字符流是否可以拷贝非纯文本的文件

* 不可以拷贝非纯文本的文件

* 因为在读的时候会将字节转换为字符,在转换过程中,可能找不到对应的字符,就会用?代替,写出的时候会将字符转换成字节写出去

* 如果是?,直接写出,这样写出之后的文件就乱了,看不了了

字符流