Java--转换流详解

Java--转换流详解

博客说明

文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢!

说明

通过转换流可以解决一定的编码问题

转换流图解

image-20200424232107479

InputStreamReader类

转换流java.io.InputStreamReader,是Reader的子类,是从字节流到字符流的桥梁。它读取字节,并使用指定的字符集将其解码为字符。它的字符集可以由名称指定,也可以接受平台的默认字符集

构造方法
  • InputStreamReader(InputStream in): 创建一个使用默认字符集的字符流。
  • InputStreamReader(InputStream in, String charsetName): 创建一个指定字符集的字符流。

构造举例,代码如下:

InputStreamReader isr = new InputStreamReader(new FileInputStream("in.txt"));
InputStreamReader isr2 = new InputStreamReader(new FileInputStream("in.txt") , "GBK");

OutputStreamWriter类

转换流java.io.OutputStreamWriter ,是Writer的子类,是从字符流到字节流的桥梁。使用指定的字符集将字符编码为字节。它的字符集可以由名称指定,也可以接受平台的默认字符集。

构造方法
  • OutputStreamWriter(OutputStream in): 创建一个使用默认字符集的字符流。
  • OutputStreamWriter(OutputStream in, String charsetName): 创建一个指定字符集的字符流。

构造举例,代码如下:

OutputStreamWriter isr = new OutputStreamWriter(new FileOutputStream("out.txt"));
OutputStreamWriter isr2 = new OutputStreamWriter(new FileOutputStream("out.txt") , "GBK");

转换文件编码

import java.io.*;

/**
 * @author Trans
 * @date 2020/4/24 11:23 下午
 */
public class Trans {
    public static void main(String[] args) throws IOException {
        String srcFile = "file_gbk.txt";
        String destFile = "file_utf8.txt";

        //创建流对象
        InputStreamReader isr = new InputStreamReader(new FileInputStream(srcFile),"GBK");
        //默认为utf-8
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(srcFile));

        //读取数据
        char[] cbuf = new char[1024];
        int len;
        while ((len = isr.read(cbuf))!=-1){
            osw.write(cbuf,0,len);
        }

        //释放资源
        osw.close();
        isr.close();
    }
}

感谢

百度百科

黑马程序员

以及勤劳的自己

原创文章 295 获赞 749 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_45163122/article/details/105742255
今日推荐