您好,欢迎来到华佗健康网。
搜索
您的当前位置:首页转换带十六进制Unicode编码字符串文件的Java程序

转换带十六进制Unicode编码字符串文件的Java程序

来源:华佗健康网
将十六进制Unicode编码字符串文件转换为可读文件的

Java程序

事情起因就是我手头有好些文件都带有Unicode编码字符串,具体显示效果是这样的:”\函\数\功\能\:\跳\转\至\其\他\页\面“。

嗯,很糟糕,这样是不能看的,所以我简单的写了个程序,自动转换一下带十六进制Unicode编码字符串文件,支持文件夹嵌套。没准以后还能用着,就稍微整理了一下。

import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { /** * 将带十六进制Unicode编码字符串文件转换为可读文件 * @param res 源文件 * @param tar 目标文件 */ public static void changeFile(File res, File tar) { if(res != null && res.isFile()) { try { FileInputStream fis = new FileInputStream(res); FileOutputStream fos = new FileOutputStream(tar); byte[] buff = new byte[fis.available()]; while (fis.read(buff) != -1) { String s = new String(buff); } /* } s = test.unicodeToString(s); fos.write(s.getBytes(), 0, s.getBytes().length); } fos.close(); fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } * 把中文字符串转换为十六进制Unicode编码字符串 */ public static String stringToUnicode(String s) { String str = \"\"; for (int i = 0; i < s.length(); i++) { int ch = (int) s.charAt(i); if (ch > 255) str += \"\\\ Integer.toHexString(ch); else str += \"\\\\\" + Integer.toHexString(ch); } return str; } /* * 把十六进制Unicode编码字符串转换为中文字符串 */ public static String unicodeToString(String str) { Pattern pattern = Pattern.compile(\"(\\\\\\\\p{XDigit}{4}))\"); Matcher matcher = pattern.matcher(str); char ch; while (matcher.find()) { ch = (char) Integer.parseInt(matcher.group(2), 16); str = str.replace(matcher.group(1), ch + \"\"); } return str; } /** * 递归列出所有文件名 */ public static void listFile(List list, File path){ if(path != null && path.isDirectory()) { File[] files = path.listFiles(); for(File file : files) { if(!file.isDirectory()) { list.add(path.toString() + \"\\\\\" +file.getName()); }else { listFile(list, file); } } } } /** * 将带十六进制Unicode编码字符串文件转换为可读文件,每一个可读文件后缀加上了“.changed” } */ public static void main(String[] args) { File res = null; File tar = null; } String filePath = \"目录路径\"; File path = new File(filePath); List list =new ArrayList(); listFile(list, path); for (String str : list) { res = new File(str); tar = new File(str + \".changed\"); changeFile(res, tar); } System.out.println(\"执行完成\");

附带一点正则表达式的知识:

正则表达式中Matcher的group()、start()、end()带参方法解析: http://hi.baidu.com/cnjsp/blog/item/f49d824c5102b46c8119cb.html

关于正则表达式问题:

http://topic.csdn.net/t/20051223/21/4478391.html

揭开正则表达式的神秘面纱: http://www.regexlab.com/zh/regref.htm

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务