码迷,mamicode.com
首页 > 编程语言 > 详细

Java-文件转码方法

时间:2015-01-10 12:38:37      阅读:289      评论:0      收藏:0      [点我收藏+]

标签:

http://blog.csdn.net/zhengqiqiqinqin/article/details/12621201

法一:java.lang.string

    //法一: xx编码-->new String(byte[]b,Charset xx)-->Stirng.getBytes(Charset yy)-->yy编码
    public static void method_1() throws Exception
    {
         FileInputStream fis=new FileInputStream ("F:\\test\\test.txt"); 
         File f=new File("F:\\test\\copy-test2.txt");
         if(!f.exists())
             f.createNewFile();
         FileOutputStream fos=new FileOutputStream(f);
         
         byte [] b=new byte[10];
         int len=0;
         while((len=fis.read(b))!=-1)
        {    
             //思路:GB2312 到UTF-8,必须通过一个中间编码介质,这里是String
             //将字节数组转换为string (其编码与操作系统一样是GBK)
             //再将String转成其他编码的字节数组
                  String s=new String(b,0,len,"GB2312");
                  b=s.getBytes("UTF-8");
          //fos.write(b,0,len);注意:这里是错误的,因为转码后的字节数组的长度变了,不是原来长度的字节数组
                  fos.write(b);
         }
         if(fos!=null)
           fos.close();
         if(fis!=null)
             fis.close();
    }

法二:java.io.InputStreamReader/OutputStreamWriter:桥转换

//法二(推荐):【IO流】xx编码-->inputstreamreader(file,"xx")--->outputStreamWriter(file,"yy")-->yy编码
    public static void method_2()throws Exception
    {
         FileInputStream fis=new FileInputStream ("F:\\test\\test.txt"); 
         File f=new File("F:\\test\\copy-test.txt");
         if(!f.exists())
             f.createNewFile();
         FileOutputStream fos=new FileOutputStream(f);
         //io流转接
         InputStreamReader isr=new InputStreamReader(fis,"GB2312");
         OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-8");
         //读取:
         char [] cs=new char[1024];
         int len=0;
         while((len=isr.read(cs))!=-1)
        {
             osw.write(cs,0,len);
         }
         //关闭流
        osw.flush();
        osw.close();
        isr.close();
    }

方法三:java.nio.Charset

 

Java-文件转码方法

标签:

原文地址:http://www.cnblogs.com/beyondbycyx/p/4214702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!