用java將GBK工程轉(zhuǎn)為uft8的方法實(shí)例
本文介紹了用java將GBK工程轉(zhuǎn)為uft8,分享給大家,具體如下:
windows下的默認(rèn)編碼為GBK還有g(shù)b2312,如何把gbk的java工程轉(zhuǎn)為utf8的呢,如果直接修改工程編碼,其實(shí)里面的java文件中中文是會(huì)亂碼的,寫(xiě)了個(gè)批量轉(zhuǎn)換java工程的程序,消遣一下。
為什么要轉(zhuǎn)碼?
有些老的項(xiàng)目,或者朋友的項(xiàng)目之前沒(méi)注意在windows上不是utf8,而你有需要看注釋或者什么,總不能一個(gè)文件一個(gè)文件的去改編碼屬性吧。
本程序試用范圍
gbk的代碼,或者gb2312的工程均可以轉(zhuǎn)換
編碼轉(zhuǎn)換的思路
本來(lái)想做成一個(gè)通用的會(huì)自動(dòng)檢測(cè)編碼,自動(dòng)轉(zhuǎn)換的程序。但是由于判斷編碼類(lèi)型不準(zhǔn),所以做成了針對(duì)GBK的轉(zhuǎn)換。
- 制定gbk編碼把文件流讀進(jìn)來(lái),加載到內(nèi)存,轉(zhuǎn)為String類(lèi)型的內(nèi)容
- 將String內(nèi)容轉(zhuǎn)為utf8的String
- 將String內(nèi)容寫(xiě)入文件
核心代碼:
public class TransferProject{
public static void transferFile(String pathName,intdepth)throwsException{
File dirFile = new File(pathName);
if (!isValidFile(dirFile)) return;
//獲取此目錄下的所有文件名與目錄名
String[] fileList = dirFile.list();
int currentDepth = depth + 1;
for (int i = 0; i < fileList.length; i++) {
String string = fileList[i];
File file = new File(dirFile.getPath(), string);
String name = file.getName();
//如果是一個(gè)目錄,搜索深度depth++,輸出目錄名后,進(jìn)行遞歸
if (file.isDirectory()) {
//遞歸
transferFile(file.getCanonicalPath(), currentDepth);
} else {
if (name.contains(".java") || name.contains(".properties") || name.contains(".xml")) {
readAndWrite(file);
System.out.println(name + " has converted to utf8 ");
}
}
}
}
private static boolean isValidFile(File dirFile)throwsIOException{
if (dirFile.exists()) {
System.out.println("file exist");
return true;
}
if (dirFile.isDirectory()) {
if (dirFile.isFile()) {
System.out.println(dirFile.getCanonicalFile());
}
return true;
}
return false;
}
private static void readAndWrite(File file)throwsException{
String content = FileUtils.readFileByEncode(file.getPath(), "GBK");
FileUtils.writeByBufferedReader(file.getPath(), new String(content.getBytes("UTF-8"), "UTF-8"));
}
public static void main(String[] args)throwsException{
//程序入口,制定src的path
String path = "/Users/mac/Downloads/unit06_jdbc/src";
transferFile(path, 1);
}
}
public class FileUtils{
public static void writeByBufferedReader(String path, String content){
try {
File file = new File(path);
file.delete();
if (!file.exists()) {
file.createNewFile();
}
FileWriter fw = new FileWriter(file, false);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(content);
bw.flush();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public staticStringreadFileByEncode(String path, String chatSet)throwsException{
InputStream input = new FileInputStream(path);
InputStreamReader in = new InputStreamReader(input, chatSet);
BufferedReader reader = new BufferedReader(in);
StringBuffer sb = new StringBuffer();
String line = reader.readLine();
while (line != null) {
sb.append(line);
sb.append("\r\n");
line = reader.readLine();
}
return sb.toString();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Spring 中如何根據(jù)環(huán)境切換配置 @Profile
這篇文章主要介紹了Spring中如何根據(jù)環(huán)境切換配置@Profile的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
簡(jiǎn)單易用的Spring?Boot郵件發(fā)送demo
本文將介紹如何使用Spring?Boot發(fā)送郵件,我們將演示如何配置SMTP郵件服務(wù)器,創(chuàng)建一個(gè)郵件模板,以及如何使用JavaMailSender發(fā)送郵件,我們還將介紹如何測(cè)試我們的郵件發(fā)送代碼2023-12-12
java通過(guò)共享變量結(jié)束run停止線程的方法示例
這篇文章主要介紹了java通過(guò)共享變量結(jié)束run停止線程的方法,大家參考使用2013-11-11
Springboot項(xiàng)目Maven依賴(lài)沖突的問(wèn)題解決
使用Spring Boot和Maven進(jìn)行項(xiàng)目開(kāi)發(fā)時(shí),依賴(lài)沖突是一個(gè)常見(jiàn)的問(wèn)題,本文就來(lái)介紹一下Springboot項(xiàng)目Maven依賴(lài)沖突的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
JSON反序列化Long變Integer或Double的問(wèn)題及解決
這篇文章主要介紹了JSON反序列化Long變Integer或Double的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01
通過(guò)代碼實(shí)例解析JAVA類(lèi)生命周期
這篇文章主要介紹了通過(guò)代碼實(shí)例解析JAVA類(lèi)生命周期,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
手把手帶你了解Java-Stream流方法學(xué)習(xí)及總結(jié)
這篇文章主要介紹了通過(guò)實(shí)例了解JavaStream流的方法學(xué)習(xí)和總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-08-08
mybatis Mapper的xml文件中resultType值的使用說(shuō)明
這篇文章主要介紹了mybatis Mapper的xml文件中resultType值的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
SpringBoot配置文件高級(jí)用法實(shí)戰(zhàn)分享
Spring Boot配置文件的優(yōu)先級(jí)是一個(gè)重要的概念,它決定了當(dāng)存在多個(gè)配置文件時(shí),哪個(gè)配置文件中的配置將被優(yōu)先采用,本文給大家介紹了SpringBoot配置文件高級(jí)用法實(shí)戰(zhàn),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08

