前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >批量转化字符编码

批量转化字符编码

作者头像
说故事的五公子
发布2020-08-24 16:48:26
5070
发布2020-08-24 16:48:26
举报

今天在做项目中,需要用到一些CSS和JS文件,于是将之前项目中的文件拷贝过来,项目运行时发现出现乱码,于是便开始修改,结果改的时候发现四五十个文件,这不得改半天!索性自己写了个工具类,批量修改字符编码,几秒钟完事,分享给大家,以后再也不用单独修改编码了。

代码语言:javascript
复制
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;

/**
 *  字符编码转化工具类
 *  可以批量对文件编码格式进行转化   支持同时修改多个文件夹中的文件
 *  auther: wugongzi
 *  date: 2020-8-21
 */
public class ConvertEncode {
    //源文件路径
    private String sDirectory = "E:\\Work\\css";
    //目标文件路径
    private String dDirectory = "E:\\Work\\css1";

    public static void main(String[] args) {
        ConvertEncode encode = new ConvertEncode();
        try {
            encode.readerFile(encode.sDirectory);
        } catch (IOException e) {
            e.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"));
                    File newF = new File(newFile);
                    newF.createNewFile();
                    // 目标文件编码格式
                    BufferedWriter w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newF), "UTF-8"));
                    String lineText = null;
                    while ((lineText = r.readLine()) != null) {
                        w.write(lineText);
                        w.newLine();
                    }
                    w.close();
                    r.close();
                } else {
                    readerFile(child[i]);
                }
            }
        }
    }

}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档