欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java批量轉(zhuǎn)換文件編碼格式的實(shí)現(xiàn)方法及實(shí)例代碼

 更新時(shí)間:2019年04月25日 09:34:33   作者:SunEn  
這篇文章主要介紹了Java實(shí)現(xiàn) 批量轉(zhuǎn)換文件編碼格式的方法及實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、場(chǎng)景說(shuō)明

  不知道大家有沒(méi)有遇到過(guò)之前項(xiàng)目是GBK,現(xiàn)在需要全部換成UTF-8的情況.反正我是遇到了.

  eclipse可以改變項(xiàng)目的編碼格式,但是文件如果直接轉(zhuǎn)換的話里面的中文就會(huì)全部亂碼,需要先復(fù)制文件內(nèi)容然后改變文件格式,再全選 粘貼(可能有其它更好的方法我不知道),

  這樣的話一個(gè)項(xiàng)目要全部一個(gè)一個(gè)文件改,想想都難受.作為一個(gè)程序猿,就寫(xiě)了個(gè)簡(jiǎn)單的方法讓程序處理.

  思路:方法很簡(jiǎn)單,遍歷項(xiàng)目文件夾-篩選java擴(kuò)展文件-把文件編碼從GBK轉(zhuǎn)換成UTF-8.

  注意:編碼格式一定不要弄錯(cuò),建議轉(zhuǎn)換前備份.不然你會(huì)后悔的,我為了偷懶測(cè)試了兩個(gè)工程后,就把整個(gè)工作空間轉(zhuǎn)換了,然后有的項(xiàng)目原本就是UTF-8,執(zhí)行完成后就亂碼了😂.

補(bǔ)救辦法是:把項(xiàng)目從UTF-8轉(zhuǎn)換成GBK,不亂碼了,但是有后遺癥,雖然大部分都救回來(lái)了,但是不知道某個(gè)字符就變成?了.

二、引用依賴

這里我用了國(guó)人開(kāi)發(fā)的超好用的java工具包hutool,官網(wǎng) https://hutool.cn/ 類(lèi)似于lang3包,相比lang3,hutool功能更多,中文注解,中文注解,中文注解.      

<dependency>
  <groupId>cn.hutool</groupId>
  <artifactId>hutool-all</artifactId>
  <version>4.5.6</version>
 </dependency>

三、方法實(shí)現(xiàn)

import java.io.File;
import java.io.FileFilter;
import java.nio.charset.Charset;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.StrUtil;
public class ConcertEncodeing {
 public static void main(String[] args) {
 convertCharset("D:\\workspaces\\workspaceOxygen\\ceshi",Charset.forName("GBK"),Charset.forName("UTF-8"),"java");
 }
 /**
 * 轉(zhuǎn)換文件編碼格式
 * @param path 需要轉(zhuǎn)換的文件或文件夾路徑
 * @param fromCharset 原編碼格式
 * @param toCharset 目標(biāo)編碼格式
 * @param expansion 需要轉(zhuǎn)換的文件擴(kuò)展名,如需全部轉(zhuǎn)換則傳 null
 */
 private static void convertCharset(String path,Charset fromCharset,Charset toCharset,String expansion ) {
 if (StrUtil.isBlank(path)) {
  return;
 }
 File file = FileUtil.file(path);
 File[] listFiles = file.listFiles(new FileFilter() {
  @Override
  public boolean accept(File pathname) {
  if (StrUtil.isBlank(expansion)) {
   return true;
  }
  if (FileUtil.isDirectory(pathname)||FileUtil.extName(pathname).equals("java")) {
   return true;
  }
  return false;
  }
 });
 for (int i = 0; i < listFiles.length; i++) {
  if (listFiles[i].isDirectory()) {
  String canonicalPath = FileUtil.getCanonicalPath(listFiles[i]);
  //每個(gè)文件夾分個(gè)線程處理,提高點(diǎn)兒效率
  new Thread(new Runnable() {
   @Override
   public void run() {
   convertCharset(canonicalPath,fromCharset,toCharset,expansion);
   }
  }).start();
  }else {
  FileUtil.convertCharset(listFiles[i], fromCharset, toCharset);
  Console.log("轉(zhuǎn)換完成文件名:{}",listFiles[i].getName());
  }
 }
 }
}

總結(jié)

以上所述是小編給大家介紹的Java實(shí)現(xiàn) 批量轉(zhuǎn)換文件編碼格式的方法及實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • 運(yùn)行jar程序時(shí)添加vm參數(shù)的方法

    運(yùn)行jar程序時(shí)添加vm參數(shù)的方法

    下面小編就為大家?guī)?lái)一篇運(yùn)行jar程序時(shí)添加vm參數(shù)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 基于Java實(shí)現(xiàn)一個(gè)高效可伸縮的計(jì)算結(jié)果緩存

    基于Java實(shí)現(xiàn)一個(gè)高效可伸縮的計(jì)算結(jié)果緩存

    這篇文章將通過(guò)對(duì)一個(gè)計(jì)算結(jié)果緩存的設(shè)計(jì)迭代介紹,分析每個(gè)版本的并發(fā)缺陷,并分析如何修復(fù)這些缺陷,最終完成一個(gè)高效可伸縮的計(jì)算結(jié)果緩存,感興趣的小伙伴可以了解一下
    2023-06-06
  • Jenkins自動(dòng)構(gòu)建部署項(xiàng)目到遠(yuǎn)程服務(wù)器上的方法步驟

    Jenkins自動(dòng)構(gòu)建部署項(xiàng)目到遠(yuǎn)程服務(wù)器上的方法步驟

    這篇文章主要介紹了Jenkins自動(dòng)構(gòu)建部署項(xiàng)目到遠(yuǎn)程服務(wù)器上的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Spring Cloud Feign的使用案例詳解

    Spring Cloud Feign的使用案例詳解

    Feign是Netflix開(kāi)發(fā)的?個(gè)輕量級(jí)RESTful的HTTP服務(wù)客戶端(?它來(lái)發(fā)起請(qǐng)求,遠(yuǎn)程調(diào)?的),是以Java接?注解的?式調(diào)?Http請(qǐng)求,F(xiàn)eign被?泛應(yīng)?在Spring Cloud 的解決?案中,本文給大家介紹Spring Cloud Feign的使用,感興趣的朋友一起看看吧
    2023-02-02
  • Mybatis配置之<typeAliases>別名配置元素解析

    Mybatis配置之<typeAliases>別名配置元素解析

    這篇文章主要介紹了Mybatis配置之<typeAliases>別名配置元素解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java日期時(shí)間與正則表達(dá)式超詳細(xì)整理(適合新手入門(mén))

    Java日期時(shí)間與正則表達(dá)式超詳細(xì)整理(適合新手入門(mén))

    如果使用得當(dāng),正則表達(dá)式是匹配各種模式的強(qiáng)大工具,下面這篇文章主要給大家介紹了關(guān)于Java日期時(shí)間與正則表達(dá)式超詳細(xì)整理的相關(guān)資料,本文非常適合新手入門(mén),需要的朋友可以參考下
    2023-04-04
  • Java元素排序Comparable與Comparator的區(qū)別

    Java元素排序Comparable與Comparator的區(qū)別

    這篇文章主要介紹了Java元素排序Comparable與Comparator的區(qū)別,二者都是頂級(jí)的接口,但擁有的方法和用法是不同的,下面我們分別來(lái)看看具體是怎樣的區(qū)別吧
    2022-05-05
  • java讀取cvs文件并導(dǎo)入數(shù)據(jù)庫(kù)

    java讀取cvs文件并導(dǎo)入數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了java讀取cvs文件并導(dǎo)入數(shù)據(jù)庫(kù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • SpringBoot結(jié)合Redis配置工具類(lèi)實(shí)現(xiàn)動(dòng)態(tài)切換庫(kù)

    SpringBoot結(jié)合Redis配置工具類(lèi)實(shí)現(xiàn)動(dòng)態(tài)切換庫(kù)

    本文主要介紹了SpringBoot結(jié)合Redis配置工具類(lèi)實(shí)現(xiàn)動(dòng)態(tài)切換庫(kù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 教你用java實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)(附詳細(xì)代碼)

    教你用java實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)(附詳細(xì)代碼)

    教學(xué)管理系統(tǒng)很適合初學(xué)者對(duì)于所學(xué)語(yǔ)言的練習(xí),下面這篇文章主要給大家介紹了關(guān)于如何用java實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)的相關(guān)資料,文中給出了詳細(xì)的實(shí)例代碼,需要的朋友可以參考下
    2023-06-06

最新評(píng)論