手机
当前位置:查字典教程网 >编程开发 >Java >Java IO文件编码转换实现代码
Java IO文件编码转换实现代码
摘要:对IO操作真心不是很懂。。。对编码、乱码也是一知半解。。。今天遇到了一个需求,要求将一个文件进行编码转换,并且返回编码后的字符串,如原本的G...

对IO操作真心不是很懂。。。对编码、乱码也是一知半解。。。今天遇到了一个需求,要求将一个文件进行编码转换,并且返回编码后的字符串,如原本的GBK编码,转换为UTF-8

其中这个BytesEncodingDetect 类就不贴了。主要用了里面的获取文件编码格式。

刚开始试了直接在源文件修改编码方式,采用URLEncoder和URLDecoder进行转换,却迟迟不行。出现了中文奇数最后一个字乱码

百度找了解决方法,都未果,只好采用我的思路是:先读取源文件的内容,存放到StringBuffer里面,然后删除源文件,再重新new一个文件,再以另一中编码形式存放进去。

查看编码后效果:注意不要在eclipse查看效果,eclipse以一种编码形式查看而已,所以可以在浏览器端查看如html文件,查看指定编码可以右键---编码,以此来判断是否成功。

复制代码 代码如下:

package com.test;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.URLDecoder;

import java.net.URLEncoder;

public class Transcoding {

private BytesEncodingDetect encode = new BytesEncodingDetect();

public Transcoding() {

}

/**

* 编码转换

* @param toCharset 要转换的编码

* @param path 要转换的文件路径

* @return

* @throws Exception

*/

public String encoding(String toCharset, String path) throws Exception{

File srcFile = new File(path);

int index = encode.detectEncoding(srcFile);

String charset = BytesEncodingDetect.javaname[index];

// 编码相同,无需转码

if (charset.equalsIgnoreCase(toCharset)) {

return "编码一样,无需转换";

}

InputStream in = new FileInputStream(path);

BufferedReader br = new BufferedReader(

new InputStreamReader(in, charset));

StringBuffer sb = new StringBuffer();

String s1;

while ((s1=br.readLine())!=null) {

String s = URLEncoder.encode(s1, toCharset);

sb.append(s+"rn");//一行+回车

}

br.close();

srcFile.delete();//删除原来文件

//重新以新编码写入文件并返回值

File newfile = new File(path);//重新建原来的文件

newfile.createNewFile();

OutputStream out = new FileOutputStream(newfile);

OutputStreamWriter writer = new OutputStreamWriter(out, toCharset);

BufferedWriter bw = new BufferedWriter(writer);

bw.write(URLDecoder.decode(sb.toString(), toCharset));

String result = URLDecoder.decode(sb.toString(), toCharset);

bw.flush();//刷到文件中

bw.close();

return result;

}

}

【Java IO文件编码转换实现代码】相关文章:

java 获取项目文件路径实现方法

用java实现的获取优酷等视频缩略图的实现代码

java dom4j解析xml文件代码实例分享

Java压缩文件ZIP实例代码

Java Clone(类的复制)实例代码

java中 spring 定时任务 实现代码

Java 的 FileFilter文件过滤与readline读行操作实例代码

java多线程复制文件的实例代码

Java注册邮箱激活验证实现代码

java读取csv文件内容示例代码

精品推荐
分类导航