首页 > 代码库 > Java-文件转码方法
Java-文件转码方法
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-文件转码方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。