GBK文件格式批量转换UTF-8
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    //旧文件(GBK格式)路径。可以是整个目录也可以单个文件转换
    private String sDirectory = "/root/Linux/files/2";
    //新文件(UTF-8)路径
    private String dDirectory = "/root/Linux/files/22";

    public static void main(String[] args) {
        Main convert = new Main();
        try {
            convert.readerFile(a.sDirectory);
        } catch (IOException e) {
            convert.printStackTrace();
        }
    }

    public void readerFile(String filePath) throws IOException {
        if ("".equals(filePath) || null == filePath) {
            return;
        }

        File f = new File(filePath);
        if (f.isDirectory()) {
            String[] child = f.list();
            for (int i = 0; i < child.length; i++) {
                String path = f.getAbsolutePath() + File.separator;
                String newPath = path.replace(this.sDirectory, this.dDirectory);
                child[i] = path + child[i];
                File c = new File(child[i]);
                String newFile = child[i].replace(this.sDirectory, this.dDirectory);
                System.out.println("旧路径:" + path);
                System.out.println("新路径:" + newPath);

                File newP = new File(newPath);
                if (!newP.exists())
                    newP.mkdir();

                if (c.isFile()) {
                    System.out.println("旧文件:" + child[i]);
                    System.out.println("新文件:" + newFile);
                    // Charset US-ASCII ISO-8859-1 UTF-8 UTF-16BE UTF-16LE UTF-16
                    BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(c), "GBK"));
                    // BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(c)));
                    File newF = new File(newFile);
                    newF.createNewFile();
                    // BufferedWriter w = new BufferedWriter(new
                    // OutputStreamWriter(new FileOutputStream(newF), "UTF-8"));
                    BufferedWriter w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newF)));
                    // BufferedWriter w = new BufferedWriter(new FileWriter(newFile));
                    String lineText = null;
                    while ((lineText = r.readLine()) != null) {
                        // String temp = new String(lineText.getBytes("ISO-8859-1"), "UTF-8");
                        w.write(lineText);
                        w.newLine();
                    }
                    w.close();
                    r.close();
                } else {
                    readerFile(child[i]);
                }
            }
        }
    }

}

上一篇
下一篇