批量转化字符编码
时间:2022-07-23
本文章向大家介绍批量转化字符编码,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天在做项目中,需要用到一些CSS和JS文件,于是将之前项目中的文件拷贝过来,项目运行时发现出现乱码,于是便开始修改,结果改的时候发现四五十个文件,这不得改半天!索性自己写了个工具类,批量修改字符编码,几秒钟完事,分享给大家,以后再也不用单独修改编码了。
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]);
}
}
}
}
}
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](六)
- android SDL系列讲解(十三) 播放音乐库 SDL_mixer教程
- android am 命令简单讲解(一)
- 渗透测试专用版Linux:BackBox3.13发布
- android dumpsys 快速入门
- 不容小觑的金融诈骗手段 – 419诈骗
- 新年伊始,微软再遭叙利亚电子军挑衅
- 任天堂3DS游戏机烧录卡蓝屏事件
- android调用dialog.hide()引起的输入事件派发错误问题追踪
- 互联网世界的毒瘤——僵尸网络
- android 游戏移植 (一) (文末有福利) | SDL 西游释厄传调试
- 自制分布式漏洞扫描工具
- [细节剖析]X Windows中一个22年的漏洞
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 个性化终端 | zsh bash oh-my-zsh
- VirtualBox无限嵌套方法 | 虚拟机套娃
- Win10 LTSC 激活方法 | Win10专业版(永久激活)长期服务版 LTSC 2019密钥
- Nginx代理以及面向未来的HTTP
- git的基本使用
- 一、玩转Git三剑客-Git基础
- Docker和k8s的故障排除和监控利器 Weave-Scope服务
- docker 配置Consul+registrator实时服务发现
- 使用Docker搭建Zookeeper集群
- GDCRNATools内置的gdc-client不好用
- 字符编码与字符串表达式
- 关于批次效应矫正后出现负值
- 在SAP WebIDE里使用Fiori Elements快速开发SAP UI5应用
- SAP Fiori Elements里的Smart Table工作原理解析
- SAP Fiori Elements里Smart Link工作原理介绍