转换流

字符流中和编码解码问题相关的两个类

  • InputStreamReader:是从字节流到字符流的桥梁,父类是Reader
    它读取字节,并使用指定的编码将其解码为字符
    它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集
  • OutputStreamWriter:是从字符流到字节流的桥梁,父类是Writer
    是从字符流到字节流的桥梁,使用指定的编码将写入的字符编码为字节
    它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集

转换流读写数据

  • 构造方法
    | 方法名 | 说明 | | —- | —- | | InputStreamReader(InputStream in) | 使用默认字符编码创建InputStreamReader对象 | | InputStreamReader(InputStream in,String chatset) | 使用指定的字符编码创建InputStreamReader对象 | | OutputStreamWriter(OutputStream out) | 使用默认字符编码创建OutputStreamWriter对象 | | OutputStreamWriter(OutputStream out,String charset) | 使用指定的字符编码创建OutputStreamWriter对象 |

  • 代码演示

    1. public class ConversionStreamDemo {
    2. public static void main(String[] args) throws IOException {
    3. //OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt"));
    4. OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("myCharStream\\osw.txt"),"GBK");
    5. osw.write("中国");
    6. osw.close();
    7. //InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\osw.txt"));
    8. InputStreamReader isr = new InputStreamReader(new FileInputStream("myCharStream\\osw.txt"),"GBK");
    9. //一次读取一个字符数据
    10. int ch;
    11. while ((ch=isr.read())!=-1) {
    12. System.out.print((char)ch);
    13. }
    14. isr.close();
    15. }
    16. }