时间:2021-05-19
在开发过程中,可能会遇到文件编码的转换,虽然说开发工具eclipse可以转换编码,但是有的情况却很不方便。比如,原来文件本身的编码是GBK,现在要转换成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(); } }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文主要以实例形式讨论了VC编译环境下,实现字符串和文件编码方式转换的方法,在linux下请使用Strconv来实现。具体方法如下:一、文件编码格式转换//GB
本文实例讲述了Python实现批量转换文件编码的方法。分享给大家供大家参考。具体如下:这里将某个目录下的所有文件从一种编码转换为另一种编码,然后保存import
本文实例讲述了JS实现的Unicode编码转换操作。分享给大家供大家参考,具体如下:Unicode编码转换/**jsUnicode编码转换*/vardecToH
本文实例讲述了Java实现base64图片编码数据转换为本地图片的方法。分享给大家供大家参考,具体如下:项目中用到的把base64图片数据转为本地图片的函数/*
Java—IO流字符流 java的文本(char)是16位无符号整数,是字符的unicode编码(双字节编码)。 文件是bytebytebyte...的数据