Java-IO流系列-转换流

时间:2021-06-28 19:36:57   收藏:0   阅读:0

转换流

什么是转换流

转换流提供了在字节流和字符流之间的转换

Java API提供了两个转换流:

技术图片

转换流的使用

输入流

  1. 转换流:

    • InputStreamReader:将- -个字节的输入流转换为字徒的输入流
    • outputstreamwriter:将-一个字符的输出流转换为字节的输出流
  2. 作用:提供字节流与字符流之间的转换

  3. 编码与解码

    • 解码:字节、字节数组--->字符数组、 字符串
    • 编码:字符数组、字符串--->字节,字节数组
  4. InputStreamReader的参数2指明了字符集,具体使用哪个字符集,取决于文件test.txt保存时使用的字符集
    InputStreamReader默认是系统的编码
    
  5. 注意此时仍应该用try-catch块

package com.dreamcold.io;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class Demo12 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis=new FileInputStream("test.txt");
        InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
        char[] cbuf=new char[20];
        int len;
        while ((len=isr.read(cbuf))!=-1){
            String str=new String(cbuf,0,len);
            System.out.println(str);
        }
        isr.close();

    }
}
  1. 结果如下:
技术图片

综合使用InputStreamReader和utputstreamWriter

package com.dreamcold.io;


import java.io.*;

public class Demo13 {
    public static void main(String[] args) throws IOException {
        File file1=new File("test.txt");
        File file2=new File("test2-gbk.txt");

        FileInputStream fis=new FileInputStream(file1);
        FileOutputStream fos=new FileOutputStream(file2);

        InputStreamReader isr=new InputStreamReader(fis,"UTF-8");
        OutputStreamWriter osw=new OutputStreamWriter(fos,"GBK");

        char[] buf=new char[10];
        int len;
        while ((len=isr.read(buf))!=-1){
            osw.write(buf,0,len);
        }

        isr.close();
        osw.close();
    }
}

效果:

技术图片
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!