[Java][IOstream][转化流]以GBK读取数据用UTF-8写出数据的实例分析

 在这里我们用到了转化流,所谓的转化流也就是实现字节流向字符流的转化。

我们都知道:Java提供了两种基础的字节流

FileInputStream可以让程序读入一个文件的信息

FileOutputStream可以让程序写出一个文件的信息

但是字节流处理的问题过于宏大,我们有时候需要处理一些微观到字符层面的数据。比方说:我们需要改变一个文件的编码。

编码格式纷繁复杂:我们知晓ascii这种支持256个字符的编码,也了解GB2312这种简体中文编码,以及GBK这种兼容性更加完善的汉字编码格式。同时知晓Unicode这种通用性编码,并且了解了UTF-8经常用作汉字的编码

这些编码类型往往集中于字符本身,因此我们想要转化一个含有若干字节的文件编码,就需要先将这些大量的字节变成字符,这个过程就是InputStreamReader

同样的,在程序中以字符的形式处理完这些编码后,我们需要将其进行输出为一个新的文件,我们会以字节流这种方式来高效快速输出,我们将这个输出的过程称为OutputStreamWriter

读到这里,想必你已经知晓了为什么我们在转化流,譬如InputStreamReader的参数里面会new一个FileInputStream 原因就是我们需要把一个字节流放到转化流中来处理

最后,请不要忘记close两种转化流,保证资源的释放

import java.io.*;

public class Main{
    public static void main(String[] args) throws IOException {

        //地址的处理
        String src = "F:\\test\\Information\\Characters\\Male.txt";
        String dest = "F:\\test\\Information\\Characters\\Male_two.txt";
        //转换流对象的创建
        InputStreamReader ipt = new InputStreamReader(new FileInputStream(src),"GBK");
        OutputStreamWriter ips = new OutputStreamWriter(new FileOutputStream(dest),"UTF-8");
        int b;z
        while((b=ipt.read())!=-1){
            ips.write(b);
        }
        ipt.close();
        ips.close();
    }
}

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值