第13章 IO流

13.2.5 转换流

转换流

  1. 转换流提供了在字节流和字符流之间的转换
  2. Java API提供了两个转换流:
    • InputStreamReader和OutputStreamWriter
  3. 字节流中的数据都是字符时,转成字符流操作更高效。

 

InputStreamReader

  1. 用于将字节流中读取到的字节按指定字符集解码成字符。需要和InputStream“套接”。
  2. 构造方法
  • public InputStreamReader(InputStream in)
  • public InputSreamReader(InputStream in,String charsetName)

如: Reader isr = new

                     InputStreamReader(System.in,”gb2312”);

OutputStreamWriter

  1. 用于将要写入到字节流中的字符按指定字符集编码成字节。需要和OutputStream“套接”。
  2. 构造方法
  • public OutputStreamWriter(OutputStream out)
  • public OutputSreamWriter(OutputStream out,String charsetName)

第13章 IO流_第1张图片

public void testMyInput() throws Exception{

    FileInputStream fis = new FileInputStream("dbcp.txt");

    FileOutputStream fos = new FileOutputStream("dbcp5.txt");

    InputStreamReader isr = new InputStreamReader(fis,"GBK");

    OutputStreamWriter osw = new OutputStreamWriter(fos,"GBK");

    BufferedReader br = new BufferedReader(isr);

    BufferedWriter bw = new BufferedWriter(osw);

    String str = null;

    while((str = br.readLine()) != null){

        bw.write(str);

        bw.newLine();

        bw.flush();

}   

bw.close(); 

br.close();

}

                                                                                

补充:字符编码

  1. 编码表的由来

计算机只能识别二进制数据,早期由来是电信号。为了方便应用计算机,让它可以识别各个国家的文字。就将各个国家的文字用数字来表示,并一一对应,形成一张表。这就是编码表。

  1. 常见的编码表
  • ASCII:美国标准信息交换码。
    • 用一个字节的7位可以表示。
  • ISO8859-1:拉丁码表。欧洲码表
    • 用一个字节的8位表示。
  • GB2312:中国的中文编码表。
  • GBK:中国的中文编码表升级,融合了更多的中文文字符号。
  • Unicode:国际标准码,融合了多种文字。
    • 所有文字都用两个字节来表示,Java语言使用的就是unicode
    • UTF-8:最多用三个字节来表示一个字符
  1. 编码:字符串à字节数组
  2. 解码:字节数组à字符串
  3. 转换流的编码应用
  • 可以将字符按指定编码格式存储。
  • 可以对文本数据按指定编码格式来解读。
  • 指定编码表的动作由构造函数完成。

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。

你可能感兴趣的:(Java,Java培训,大数据)