package com.xjh.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.text.SimpleDateFormat; import java.util.Date; /** * 读入两个文件,写入一个文件测试字符编码问题 (0 表示: GBK 1 表示: utf-8) * readA readB writer result * 0 0 0 ok * 0 0 1 ok * 0 1 0 乱码(前ok后乱码) 因为前面的读和写一致 * 0 1 1 ok * 1 0 0 乱码(前乱码后ok) 因为后面的读和写一致 * 1 0 1 ok * 1 1 0 乱码(前后都是乱码) * 1 1 1 ok * * @author xiejiaohui (2013-1-11) * */ public class LuanMaTest { public static void main(String[] args) throws Exception { printNowDate(); // 中国银行|农业银行 // 建设银行|交通银行 File R_A_0 = new File("d:\\Reader_A_GBK.txt"); // 保存格式为:ascii File R_A_1 = new File("d:\\Reader_A_utf-8.txt"); // 保存格式为:utf-8 // 工商银行|招商银行 // 商业银行|村镇银行 File R_B_0 = new File("d:\\Reader_B_GBK.txt"); // 保存格式为:ascii File R_B_1 = new File("d:\\Reader_B_utf-8.txt"); // 保存格式为:utf-8 File W_0_0_0 = new File("d:\\W_0_0_0.txt"); File W_0_0_1 = new File("d:\\W_0_0_1.txt"); File W_0_1_0 = new File("d:\\W_0_1_0.txt"); File W_0_1_1 = new File("d:\\W_0_1_1.txt"); File W_1_0_0 = new File("d:\\W_1_0_0.txt"); File W_1_0_1 = new File("d:\\W_1_0_1.txt"); File W_1_1_0 = new File("d:\\W_1_1_0.txt"); File W_1_1_1 = new File("d:\\W_1_1_1.txt"); BufferedReader R_A_0_bf = null; BufferedReader R_A_1_bf = null; BufferedReader R_B_0_bf = null; BufferedReader R_B_1_bf = null; BufferedWriter W_0_0_0_bf = null; BufferedWriter W_0_0_1_bf = null; BufferedWriter W_0_1_0_bf = null; BufferedWriter W_0_1_1_bf = null; BufferedWriter W_1_0_0_bf = null; BufferedWriter W_1_0_1_bf = null; BufferedWriter W_1_1_0_bf = null; BufferedWriter W_1_1_1_bf = null; // 0 0 0 action(R_A_0, "GBK", R_A_0_bf, R_B_0, "GBK", R_B_0_bf, W_0_0_0, "GBK", W_0_0_0_bf); // 0 0 1 action(R_A_0, "GBK", R_A_0_bf, R_B_0, "GBK", R_B_0_bf, W_0_0_1, "utf-8", W_0_0_1_bf); // 0 1 0 action(R_A_0, "GBK", R_A_0_bf, R_B_1, "utf-8", R_B_1_bf, W_0_1_0, "GBK", W_0_1_0_bf); // 0 1 1 action(R_A_0, "GBK", R_A_0_bf, R_B_1, "utf-8", R_B_1_bf, W_0_1_1, "utf-8", W_0_1_1_bf); // 1 0 0 action(R_A_1, "utf-8", R_A_1_bf, R_B_0, "GBK", R_B_0_bf, W_1_0_0, "GBK", W_1_0_0_bf); // 1 0 1 action(R_A_1, "utf-8", R_A_1_bf, R_B_0, "GBK", R_B_0_bf, W_1_0_1, "utf-8", W_1_0_1_bf); // 1 1 0 action(R_A_1, "utf-8", R_A_1_bf, R_B_1, "utf-8", R_B_1_bf, W_1_1_0, "GBK", W_1_1_0_bf); // 1 1 1 action(R_A_1, "utf-8", R_A_1_bf, R_B_1, "utf-8", R_B_1_bf, W_1_1_1, "utf-8", W_1_1_1_bf); printNowDate(); } public static void println(String input) { System.out.println(input); } public static void printNowDate() { println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); } public static void action( File readFileA, String readFileAFmt, BufferedReader bufferedReaderA, File readFileB, String readFileBFmt, BufferedReader bufferedReaderB, File WriteFile, String writeFileFmt, BufferedWriter bufferedWriter) throws Exception { String s1; String s2; bufferedReaderA = new BufferedReader(new InputStreamReader(new FileInputStream(readFileA), readFileAFmt)); bufferedReaderB = new BufferedReader(new InputStreamReader(new FileInputStream(readFileB), readFileBFmt)); bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(WriteFile), writeFileFmt)); while ((s1 = bufferedReaderA.readLine()) != null) { while ((s2 = bufferedReaderB.readLine()) != null) { String[] s_l = s1.split("\\|"); String[] s_2 = s2.split("\\|"); bufferedWriter.append(s_l[1] + "____" + s_2[1] + "\n"); println(s_l[0] + "____" + s_l[1] + "____" + s_2[0] + "____" + s_2[1]); } } bufferedReaderA.close(); bufferedReaderB.close(); bufferedWriter.close(); } }