java txt文件编码转换器_怎么在java中对文件编码进行转换

怎么在java中对文件编码进行转换

发布时间:2021-02-20 17:10:22

来源:亿速云

阅读:96

作者:Leah

这期内容当中小编将会给大家带来有关怎么在java中对文件编码进行转换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。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();

}

}

上述就是小编为大家分享的怎么在java中对文件编码进行转换了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值