java, gbk_2_utf8

kehuadong / 2024-09-03 / 原文

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.lang.reflect.Method;
import java.lang.reflect.Constructor;
import java.nio.charset.Charset;

public class gbk_2_utf8
{
    static void recursiveFile(File f)
    {
        if (f.isDirectory())
        {
            for (File a : f.listFiles())
            {
                recursiveFile(a);
            }
        }
        else
        {
            String path = f.getPath();
            if (path.endsWith(".cpp") || path.endsWith(".h"))
            {
                String str = null;

                try 
                (
                    FileInputStream fis = new FileInputStream(f);
                )
                {
                    int size = fis.available();
                    byte[] data = new byte[size];
                    fis.read(data);
                    str = new String(data, Charset.forName("GBK"));
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                    return;
                }

                try
                (
                    FileOutputStream fos = new FileOutputStream(f);
                )
                {
                    fos.write(str.getBytes());
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
        }
    }

    public static void main(String[] args)
    {
        recursiveFile(new File("."));
    }
}