最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)文件編碼轉換的方法

 更新時間:2018年05月15日 16:45:45   作者:MikanMu  
這篇文章主要為大家詳細介紹了java實現(xiàn)文件編碼轉換的方法,分享一個文件編碼轉換的工具類,具有一定的參考價值,感興趣的小伙伴們可以參考一下

在開發(fā)過程中,可能會遇到文件編碼的轉換,雖然說開發(fā)工具eclipse可以轉換編碼,但是有的情況卻很不方便。比如,原來文件本身的編碼是GBK,現(xiàn)在要轉換成UTF-8,如果直接在eclipse中把文件編碼修改成UTF-8,恭喜你,是亂碼,因為不能直接從GBK到UTF-8進行轉換,這時就需要我們手動的來轉換編碼。下面是一個文件編碼轉換的工具類。

package com.mikan.stuff; 
 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.FilenameFilter; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.OutputStream; 
import java.io.OutputStreamWriter; 
import java.nio.charset.Charset; 
import java.nio.charset.UnsupportedCharsetException; 
 
public class FileCharsetConverter { 
 
  public static void main(String[] args) throws Exception { 
    convert("D:\\stuff\\src\\main\\java\\com\\mikan\\stuff\\test.txt", 
        "GBK", "UTF-8", new FilenameFilter() { 
          @Override 
          public boolean accept(File dir, String name) { 
            return name.endsWith("txt"); 
          } 
        }); 
  } 
 
  /** 
   * 把指定文件或目錄轉換成指定的編碼 
   * 
   * @param fileName 
   *      要轉換的文件 
   * @param fromCharsetName 
   *      源文件的編碼 
   * @param toCharsetName 
   *      要轉換的編碼 
   * @throws Exception 
   */ 
  public static void convert(String fileName, String fromCharsetName, 
      String toCharsetName) throws Exception { 
    convert(new File(fileName), fromCharsetName, toCharsetName, null); 
  } 
 
  /** 
   * 把指定文件或目錄轉換成指定的編碼 
   * 
   * @param file 
   *      要轉換的文件或目錄 
   * @param fromCharsetName 
   *      源文件的編碼 
   * @param toCharsetName 
   *      要轉換的編碼 
   * @throws Exception 
   */ 
  public static void convert(File file, String fromCharsetName, 
      String toCharsetName) throws Exception { 
    convert(file, fromCharsetName, toCharsetName, null); 
  } 
 
  /** 
   * 把指定文件或目錄轉換成指定的編碼 
   * 
   * @param file 
   *      要轉換的文件或目錄 
   * @param fromCharsetName 
   *      源文件的編碼 
   * @param toCharsetName 
   *      要轉換的編碼 
   * @param filter 
   *      文件名過濾器 
   * @throws Exception 
   */ 
  public static void convert(String fileName, String fromCharsetName, 
      String toCharsetName, FilenameFilter filter) throws Exception { 
    convert(new File(fileName), fromCharsetName, toCharsetName, filter); 
  } 
 
  /** 
   * 把指定文件或目錄轉換成指定的編碼 
   * 
   * @param file 
   *      要轉換的文件或目錄 
   * @param fromCharsetName 
   *      源文件的編碼 
   * @param toCharsetName 
   *      要轉換的編碼 
   * @param filter 
   *      文件名過濾器 
   * @throws Exception 
   */ 
  public static void convert(File file, String fromCharsetName, 
      String toCharsetName, FilenameFilter filter) throws Exception { 
    if (file.isDirectory()) { 
      File[] fileList = null; 
      if (filter == null) { 
        fileList = file.listFiles(); 
      } else { 
        fileList = file.listFiles(filter); 
      } 
      for (File f : fileList) { 
        convert(f, fromCharsetName, toCharsetName, filter); 
      } 
    } else { 
      if (filter == null 
          || filter.accept(file.getParentFile(), file.getName())) { 
        String fileContent = getFileContentFromCharset(file, 
            fromCharsetName); 
        saveFile2Charset(file, toCharsetName, fileContent); 
      } 
    } 
  } 
 
  /** 
   * 以指定編碼方式讀取文件,返回文件內容 
   * 
   * @param file 
   *      要轉換的文件 
   * @param fromCharsetName 
   *      源文件的編碼 
   * @return 
   * @throws Exception 
   */ 
  public static String getFileContentFromCharset(File file, 
      String fromCharsetName) throws Exception { 
    if (!Charset.isSupported(fromCharsetName)) { 
      throw new UnsupportedCharsetException(fromCharsetName); 
    } 
    InputStream inputStream = new FileInputStream(file); 
    InputStreamReader reader = new InputStreamReader(inputStream, 
        fromCharsetName); 
    char[] chs = new char[(int) file.length()]; 
    reader.read(chs); 
    String str = new String(chs).trim(); 
    reader.close(); 
    return str; 
  } 
 
  /** 
   * 以指定編碼方式寫文本文件,存在會覆蓋 
   * 
   * @param file 
   *      要寫入的文件 
   * @param toCharsetName 
   *      要轉換的編碼 
   * @param content 
   *      文件內容 
   * @throws Exception 
   */ 
  public static void saveFile2Charset(File file, String toCharsetName, 
      String content) throws Exception { 
    if (!Charset.isSupported(toCharsetName)) { 
      throw new UnsupportedCharsetException(toCharsetName); 
    } 
    OutputStream outputStream = new FileOutputStream(file); 
    OutputStreamWriter outWrite = new OutputStreamWriter(outputStream, 
        toCharsetName); 
    outWrite.write(content); 
    outWrite.close(); 
  } 
} 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 如何使用JDBC實現(xiàn)工具類抽取

    如何使用JDBC實現(xiàn)工具類抽取

    這篇文章主要介紹了如何使用JDBC實現(xiàn)工具類抽取,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • 并發(fā)編程之Java內存模型volatile的內存語義

    并發(fā)編程之Java內存模型volatile的內存語義

    這篇文章主要介紹了并發(fā)編程之Java內存模型volatile的內存語義,理解volatile特性的一個好辦法是把對volatile變量的單個讀/寫,看成是使用同一個鎖對單個讀/寫操作做了同步。下面我們一起進入文章看看具體例子吧,需要的小伙伴可以參考下
    2021-11-11
  • 在Java中解析JSON數(shù)據代碼示例及說明

    在Java中解析JSON數(shù)據代碼示例及說明

    這篇文章主要介紹了在Java中解析JSON數(shù)據的相關資料,文中講解了如何使用Gson和Jackson庫解析JSON數(shù)據,并展示了如何將日期時間字符串轉換為時間戳,通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • java追加寫入txt文件的方法總結

    java追加寫入txt文件的方法總結

    在本篇文章里我們給大家整理了關于java如何追加寫入txt文件的方法和代碼,需要的朋友們可以參考下。
    2020-02-02
  • springboot項目中idea的pom.xml文件的引用標簽全部爆紅問題解決

    springboot項目中idea的pom.xml文件的引用標簽全部爆紅問題解決

    這篇文章主要介紹了springboot項目中idea的pom.xml文件的引用標簽全部爆紅問題解決,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友參考下吧
    2023-12-12
  • ShardingSphere-Proxy5搭建使用過程分析

    ShardingSphere-Proxy5搭建使用過程分析

    ShardingSphere-Proxy是跨語言的數(shù)據庫代理服務端,主要用來處理:分表、分庫、讀寫分離 等,這篇文章主要介紹了ShardingSphere-Proxy5搭建使用過程,需要的朋友可以參考下
    2022-10-10
  • SpringBoot詳細講解異步任務如何獲取HttpServletRequest

    SpringBoot詳細講解異步任務如何獲取HttpServletRequest

    在使用框架日常開發(fā)中需要在controller中進行一些異步操作減少請求時間,但是發(fā)現(xiàn)在使用@Anysc注解后會出現(xiàn)Request對象無法獲取的情況,本文就此情況給出完整的解決方案
    2022-04-04
  • java ant包中的org.apache.tools.zip實現(xiàn)壓縮和解壓縮實例詳解

    java ant包中的org.apache.tools.zip實現(xiàn)壓縮和解壓縮實例詳解

    這篇文章主要介紹了java ant包中的org.apache.tools.zip實現(xiàn)壓縮和解壓縮實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • Flink開發(fā)IDEA環(huán)境搭建與測試的方法

    Flink開發(fā)IDEA環(huán)境搭建與測試的方法

    這篇文章主要介紹了Flink開發(fā)IDEA環(huán)境搭建與測試的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Java日常練習題,每天進步一點點(45)

    Java日常練習題,每天進步一點點(45)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07

最新評論

蕲春县| 纳雍县| 安康市| 安龙县| 德惠市| 巴南区| 宜兰县| 漳平市| 肥城市| 海盐县| 石狮市| 凉城县| 天祝| 黄大仙区| 武陟县| 齐河县| 从化市| 宁明县| 汝城县| 都昌县| 乌鲁木齐市| 噶尔县| 霞浦县| 太仆寺旗| 东至县| 贺兰县| 黄梅县| 迁西县| 营山县| 弋阳县| 房产| 治县。| 恩施市| 灵武市| 浦江县| 宣威市| 鹤岗市| 龙山县| 台南市| 巴林右旗| 龙川县|