识别常见编码格式文件并转换成UTF-8编码的java实现
来源:互联网 发布:java中final修饰的类 编辑:程序博客网 时间:2024/06/06 11:46
package com.buptsse.ate.utils; import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.UnsupportedEncodingException;import java.io.Writer;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern; /** * * @author michaelw * @email michael.wang1028@gmail.com * @date 2012-09-03 */public class ConverEncoding { static String CODE = "UTF-8"; static String FILE_SUFFIX = ".txt";//文件扩展名// static String FILE_SUFFIX = ".css";// static String FILE_SUFFIX = ".js";// static String FILE_SUFFIX = ".htm"; static String srcDir = "C:\\WorkTools\\weenCompany_ChineseEnglish_JT_V5.3.0_UTF8";//文件所在目录 /** * * @param args * @throws Exception */ public static void main(String[] args) throws Exception { List<String> files = new ArrayList<String>(); fetchFileList(srcDir, files, FILE_SUFFIX); String filecode = ""; for (String fileName : files) { filecode = codeString(fileName); if (!filecode.equals(CODE)) { convert(fileName, filecode, fileName, CODE); } } } public static void convert(String oldFile, String oldCharset, String newFlie, String newCharset) { BufferedReader bin; FileOutputStream fos; StringBuffer content = new StringBuffer(); try { System.out.println("the old file is :"+oldFile); System.out.println("The oldCharset is : "+oldCharset); bin = new BufferedReader(new InputStreamReader(new FileInputStream( oldFile), oldCharset)); String line = null; while ((line = bin.readLine()) != null) { // System.out.println("content:" + content); content.append(line); content.append(System.getProperty("line.separator")); } bin.close(); File dir = new File(newFlie.substring(0, newFlie.lastIndexOf("\\"))); if (!dir.exists()) { dir.mkdirs(); } fos = new FileOutputStream(newFlie); Writer out = new OutputStreamWriter(fos, newCharset); out.write(content.toString()); out.close(); fos.close(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void fetchFileList(String strPath, List<String> filelist, final String regex) { File dir = new File(strPath); File[] files = dir.listFiles(); Pattern p = Pattern.compile(regex); if (files == null) return; for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { fetchFileList(files[i].getAbsolutePath(), filelist, regex); } else { String strFileName = files[i].getAbsolutePath().toLowerCase(); Matcher m = p.matcher(strFileName); if (m.find()) { filelist.add(strFileName); } } } } /** * 判断文件的编码格式 * * @param fileName * :file * @return 文件编码格式 * @throws Exception */ public static String codeString(String fileName) throws Exception { BufferedInputStream bin = new BufferedInputStream(new FileInputStream( fileName)); int p = (bin.read() << 8) + bin.read(); String code = null; switch (p) { case 0xefbb: code = "UTF-8"; break; case 0xfffe: code = "Unicode"; break; case 0xfeff: code = "UTF-16BE"; break; default: code = "GBK"; } return code; }}
转自:http://www.cnblogs.com/DiYuShe/archive/2012/09/03/2668575.html
1 0
- 识别常见编码格式文件并转换成UTF-8编码的java实现
- java实现utf-8与GB2312编码的转换
- java实现utf-8与GB2312编码的转换
- 普通dos编码文件批量转换为UTF-8格式文件
- .java文件的ANSI编码转换为UTF-8编码
- .java文件的ANSI编码转换为UTF-8编码
- UTF编码转换实现
- UTF-8编码的转换
- 将windows下的GBK编码格式文件转化为Linux下UTF-8编码格式文件
- Unicode,UTF-8,GB2312编码的识别
- Unicode,UTF-8,GB2312编码的识别
- Unicode,UTF-8,GB2312编码的识别
- 简要介绍一下UTF-8编码和GBK编码------并利用linux中的iconv命令来实现UTF-8和GBK之间的相互转换
- UTF-8编码转换
- Java字符串编码转换UTF-8
- Java字符串编码转换UTF-8
- 【Java】编码转换:UTF-8转GB2312
- UTF-8、UTF-16、UTF-32之间的编码转换
- 学习Emmet的笔记
- Android WebView相关知识(全)
- sqlite数据库中第一条数据查不出来!
- 在线文档预览
- V4L2用户空间和kernel层driver的交互过程
- 识别常见编码格式文件并转换成UTF-8编码的java实现
- Spring Security hello world example
- IEEEtran参考文献乱码
- 关于Fragment嵌套Fragment中onActivityforresult无法调用的解决
- IOS常用第三方框架 --- ZAActivityBar 提示效果
- Android第七天
- MATLAB 线性运算之减法运算及其应用
- Hadoop Mapper 阶段将数据直接从 HDFS 导入 Hbase
- 百度面试题:求绝对值最小的数