cosmo

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
package com.test;
import org.junit.Test;

public class JunitTest {
  
    @Test
    public void test(){
        String path = "D:\\1.txt";
        String newPath = "D:\\2.txt";
        try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw

            /* 读入TXT文件 */// 要读取以上路径的input。txt文件
            File filename = new File(path);
            // 建立一个输入流对象reader
            InputStreamReader reader = new InputStreamReader(new FileInputStream(filename));
            // 建立一个对象,它把文件内容转成计算机能读懂的语言
            BufferedReader br = new BufferedReader(reader);
            String line = "";
            line = br.readLine();
                /* 写入Txt文件 */// 相对路径,如果没有则要建立一个新的output。txt文件
            File writename = new File(newPath);
            // 创建新文件
            writename.createNewFile();
            BufferedWriter out = new BufferedWriter(new FileWriter(writename));
            while (line != null) {
                // 一次读入一行数据
                line = br.readLine();
                System.out.println(line.toString());
                // \r\n即为换行
                out.write(cnToUnicode(line)+"\r\n");
                out.flush(); // 把缓存区内容压入文件
            }
            out.close(); // 最后记得关闭文件

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void test1(){
        System.out.println(cnToUnicode("部队"));
        System.out.println(unicodeToCn("\\u4e2d\\u56fd\\u4eba\\u6c11\\u89e3\\u653e\\u519b\\u37\\u31\\u39\\u38\\u38\\u90e8\\u961f"));
    }

    /**
     * 中文转unicode
     * @param cn
     * @return
     */
    private static String cnToUnicode(String cn) {
        char[] chars = cn.toCharArray();
        String returnStr = "";
        for (int i = 0; i < chars.length; i++) {
            returnStr += "\\u" + Integer.toString(chars[i], 16);
        }
        return returnStr;
    }

    /**
     * unicode转中文
     * @param unicode
     * @return
     */
    private static String unicodeToCn(String unicode) {
        /** 以 \ u 分割,因为java注释也能识别unicode,因此中间加了一个空格*/
        String[] strs = unicode.split("\\\\u");
        String returnStr = "";
        // 由于unicode字符串以 \ u 开头,因此分割出的第一个字符是""。
        for (int i = 1; i < strs.length; i++) {
            returnStr += (char) Integer.valueOf(strs[i], 16).intValue();
        }
        return returnStr;
    }

}

  

posted on 2018-01-16 11:53  【cosmo】  阅读(1054)  评论(0编辑  收藏  举报