package com.ctl.util;import java.io.File;import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;/** * * @author Administrator * @Description \u5C06\u6587\u672C\u6587\u4EF6\u8F6C\u6362\u4E3AUNICODE\u7F16\u7801 */public class Native2asciiUtil {/** * @description \u5C06\u6587\u672C\u6587\u4EF6\u8F6C\u6362\u6210UNICODE\u7F16\u7801\u652F\u6301UTF-8,Unicode,UTF-16BE,ANSI|ASCII,GBK * @param srcFile * \u6E90\u6587\u4EF6\u8DEF\u5F84 \u4F8B\u5982C:/test/test.txt * @param targetFilePath * \u76EE\u6807\u8DEF\u5F84 \u8F6C\u8FC7\u540E\u7684\u76EE\u6807\u6587\u4EF6H:/zz/test.java * @return * @throws Exception */public static boolean toUnicode(String srcFile, String targetFilePath)throws Exception {File file = new File(targetFilePath);String path = file.getParent();File file2 = new File(path);file2.mkdirs();String srcFileEncoding = FileUtil.getEncodeString(srcFile);StringBuffer buf = new StringBuffer("native2ascii -encoding");buf.append(" ").append(srcFileEncoding).append(" ").append(srcFile).append(" ").append(targetFilePath);try {Runtime run = Runtime.getRuntime();run.exec(buf.toString());return true;} catch (IOException e) {return false;}}/** * @description * \u5C06\u6307\u5B9A\u6587\u4EF6\u5939\u7684\u6587\u672C\u6587\u4EF6\u8F6C\u6362\u6210unicode\u7F16\u7801\u9ED8\u8BA4\u5305\u542B\u5B50\u6587\u4EF6\u5939\u652F\u6301UTF-8,Unicode,UTF-16BE,ANSI| * ASCII,GBK * @param srcPath * \u539F\u76EE\u5F55 * @param targetPath * \u76EE\u6807\u76EE\u5F55 * @throws Exception */public static void toUnicode2(String srcPath, String targetPath)throws Exception {toUnicode2(srcPath, targetPath, true);}/** * @description * \u5C06\u6307\u5B9A\u6587\u4EF6\u5939\u7684\u6587\u672C\u6587\u4EF6\u8F6C\u6362\u6210unicode\u7F16\u7801\u9ED8\u8BA4\u5305\u542B\u5B50\u6587\u4EF6\u5939\u652F\u6301UTF-8,Unicode,UTF-16BE,ANSI| * ASCII,GBK * @param srcPath * \u539F\u76EE\u5F55 * @param targetPath * \u76EE\u6807\u76EE\u5F55 * @param childDir * \u662F\u5426\u5305\u542B\u5B50\u6587\u4EF6\u5939 * @throws Exception */public static void toUnicode2(String srcPath, String targetPath,boolean childDir) throws Exception {// map\u4E2D\u5B58\u653E\u6240\u6709\u7684\u6587\u4EF6\u540D \u548C\u6587\u4EF6\u8DEF\u5F84final Runtime run = Runtime.getRuntime();Map<String, String> map = new HashMap<String, String>();map = FileUtil.getAllFileNameAndFilePathMap(srcPath, childDir, map);Set<String> key = map.keySet();Iterator<String> it = key.iterator();File file = new File(targetPath);// \u521B\u5EFA\u76EE\u6807\u8DEF\u5F84file.mkdirs();while (it.hasNext()) {String fileName = it.next();String filePath = map.get(fileName);String fileNameAndPathSrc = filePath + File.separator + fileName;// filePath.substring(2) \u7528\u4E8E\u53D6\u51FA\u76D8\u7B26\u4F8B\u5982H:%test\u53BB\u9664\u540E\u4E3A testString targetDir = targetPath + File.separator+ filePath.substring(3);String targetFile = targetDir + File.separator + fileName;file = new File(targetDir);if (!file.exists()) {// \u521B\u5EFA\u5728\u6E90\u6587\u4EF6\u76F8\u5BF9\u5E94\u7684\u8DEF\u5F84file.mkdirs();}// file = new File(targetFile);// if (file.isFile()) {// \u5982\u679C\u5B58\u5728\u6587\u4EF6\u5219\u66FF\u6362// file.delete();// }String srcFileEncoding = FileUtil.getEncodeString(fileNameAndPathSrc);final StringBuffer buf = new StringBuffer("native2ascii -encoding");buf.append(" ").append(srcFileEncoding);buf.append(" ").append(fileNameAndPathSrc).append(" ").append(targetFile);// String// type=FileTypeMap.getDefaultFileTypeMap().getContentType(targetFile);// System.out.println(type+" "+buf.toString());// \u6267\u884C\u8F6C\u6362Process p = null;try {p = run.exec(buf.toString());p.waitFor();// \u6CA1\u6709\u6B21\u53E5\u8BDD\u4F1A\u9020\u6210\u963B\u585E} catch (Exception e) {throw new Exception(e);}System.out.println(srcFileEncoding + "***** " + p.exitValue()+ "--" + buf.toString());}}/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {//String srcPath = "H:/txt";String srcPath ="E:/JavaWeb/Tarena";String targetPath = "H:/";//toUnicode("H:/t.txt", "H:/t2est.txt");toUnicode2(srcPath, targetPath, true);System.err.println("over");}}