使用java进行文件编码转换
来源:互联网 发布:linux查看文件大小 编辑:程序博客网 时间:2024/04/29 07:13
在开发过程中,可能会遇到文件编码的转换,虽然说开发工具eclipse可以转换编码,但是有的情况却很不方便。比如,原来文件本身的编码是GBK,现在要转换成UTF-8,如果直接在eclipse中把文件编码修改成UTF-8,恭喜你,是乱码,因为不能直接从GBK到UTF-8进行转换,这时就需要我们手动的来转换编码。下面是一个文件编码转换的工具类。
package com.mikan.stuff;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FilenameFilter;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.nio.charset.Charset;import java.nio.charset.UnsupportedCharsetException;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * @Description 文件编码转换 * @author huangzhongjie * @mail cblue2013@126.com * @date 2015-5-2 */public class FileCharsetConverter {private static final Log _log = LogFactory.getLog(FileCharsetConverter.class);public static void main(String[] args) throws Exception {convert("E:\\MyEclipse\\2015003\\mavenssh","GBK", "UTF-8",null);//convert("E:\\MyEclipse\\2015003\\mavenssh","UTF-8", "GBK",null);}/** * 把指定文件或目录转换成指定的编码 * * @param fileName * 要转换的文件 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @throws Exception */public static void convert(String fileName, String fromCharsetName,String toCharsetName) throws Exception {convert(new File(fileName), fromCharsetName, toCharsetName, null);}/** * 把指定文件或目录转换成指定的编码 * * @param file * 要转换的文件或目录 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @throws Exception */public static void convert(File file, String fromCharsetName,String toCharsetName) throws Exception {convert(file, fromCharsetName, toCharsetName, null);}/** * 把指定文件或目录转换成指定的编码 * * @param file * 要转换的文件或目录 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @param filter * 文件名过滤器 * @throws Exception */public static void convert(String fileName, String fromCharsetName,String toCharsetName, FilenameFilter filter) throws Exception {convert(new File(fileName), fromCharsetName, toCharsetName, filter);}/** * 把指定文件或目录转换成指定的编码 * * @param file * 要转换的文件或目录 * @param fromCharsetName * 源文件的编码 * @param toCharsetName * 要转换的编码 * @param filter * 文件名过滤器 * @throws Exception */public static void convert(File file, String fromCharsetName,String toCharsetName, FilenameFilter filter) throws Exception {if (file.isDirectory()) {File[] fileList = null;if (filter == null) {fileList = file.listFiles();} else {fileList = file.listFiles(filter);}for (File f : fileList) {convert(f, fromCharsetName, toCharsetName, filter);}} else {if (filter == null|| filter.accept(file.getParentFile(), file.getName())) {String fileContent = getFileContentFromCharset(file,fromCharsetName);saveFile2Charset(file, toCharsetName, fileContent);}}}/** * 以指定编码方式读取文件,返回文件内容 * * @param file * 要转换的文件 * @param fromCharsetName * 源文件的编码 * @return * @throws Exception */public static String getFileContentFromCharset(File file,String fromCharsetName) throws Exception {if (!Charset.isSupported(fromCharsetName)) {throw new UnsupportedCharsetException(fromCharsetName);}InputStream inputStream = new FileInputStream(file);InputStreamReader reader = new InputStreamReader(inputStream,fromCharsetName);char[] chs = new char[(int) file.length()];reader.read(chs);String str = new String(chs).trim();reader.close();return str;}/** * 以指定编码方式写文本文件,存在会覆盖 * * @param file * 要写入的文件 * @param toCharsetName * 要转换的编码 * @param content * 文件内容 * @throws Exception */public static void saveFile2Charset(File file, String toCharsetName,String content) throws Exception {if (!Charset.isSupported(toCharsetName)) {throw new UnsupportedCharsetException(toCharsetName);}OutputStream outputStream = new FileOutputStream(file);OutputStreamWriter outWrite = new OutputStreamWriter(outputStream,toCharsetName);outWrite.write(content);outWrite.close();_log.info("File: ["+file.getName()+"] has been converted.");}}
0 0
- 使用java进行文件编码转换
- 使用java进行文件编码转换
- 使用java进行文件编码转换
- 使用java进行文件编码转换
- Linux中使用iconv命令对文件进行编码转换
- 使用vbs脚本uft8toansi进行文件编码转换
- 使用Python进行编码转换
- java 文件编码转换
- JAVA 文件编码转换
- java文件编码转换
- JAVA 文件编码转换
- java 文件编码转换
- Linux下对文件进行编码转换
- Linux 对文件进行编码转换
- Python 对文件进行编码转换
- Python 对文件进行编码转换
- UEStudio中进行文件编码转换
- 使用vim转换文件编码
- 模拟器相册增加图片
- Python Learning Note
- EASYUI DATAGRID 多列复选框CheckBox
- 字符串匹配的Boyer-Moore算法
- MFC - 屏蔽回车和ESC键
- 使用java进行文件编码转换
- jquery jsonp 跨域请求实例
- Easy BST
- thrift实现一个C++实例遇到的问题
- HDU - 1846 - Brave Game (巴什博弈)
- JSON解析详解
- Apache配置虚拟目录
- 仿《文明》游戏制作日志2
- 求出在字符串S中包含字符串T的最小字符串