Java文件编码格式转换
转自博文《Java文件编码格式转换》:
默认被转换的格式为GBK,转换成的格式为UTF-8
import info.monitorenter.cpdetector.CharsetPrinter;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
public class EncodeFormatTransfer {
public static String DefaultSrcEncodeFormat = "GBK";
public static String DefaultDestEncodeFormat = "UTF-8";
public static String UnsupportedEncodingExceptionError = "编码格式错误!";
public static String FileNotFoundExceptionError = "文件不存在!";
public static String IOExceptionError = "文件读写错误!";
public static String IsUtf8File = "文件是UTF-8编码格式!";
public static String IsNotUtf8File = "文件不是UTF-8编码格式!";
public static String readFile(String path,String encodeFormat){
if((encodeFormat==null || encodeFormat.equals(""))){
if(isUTF8File(path))
encodeFormat = DefaultDestEncodeFormat;
else
encodeFormat = DefaultSrcEncodeFormat;
}
try {
String context = "";
InputStreamReader isr;
isr = new InputStreamReader(new FileInputStream(path),encodeFormat);
BufferedReader br=new BufferedReader(isr);
String line;
while((line=br.readLine())!=null){
context += line + "\r\n";
System.out.println(line);
}
br.close();
return context;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println(UnsupportedEncodingExceptionError);
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println(FileNotFoundExceptionError);
e.printStackTrace();
}catch (IOException e) {
// TODO Auto-generated catch block
System.out.println(IOExceptionError);
e.printStackTrace();
};
return "";
}
/*public static boolean isUTF8File(String path){
try {
File file = new File(path);
CharsetPrinter detector = new CharsetPrinter();
String charset = detector.guessEncoding(file);
InputStream in = new java.io.FileInputStream(file);
byte[] b = new byte[3];
in.read(b);
in.close();
System.out.println(b[0] + " " + b[1] + " " + b[2]);
if (b[0] == 0xEF && b[1] == 0xBB && b[2] == 0XBF){
System.out.println(IsUtf8File);
return true;
}
if (b[0] == -17 && b[1] == -69 && b[2] == -65){
System.out.println(IsUtf8File);
return true;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(FileNotFoundExceptionError);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(IOExceptionError);
}
System.out.println(IsNotUtf8File);
return false;
}*/
public static boolean isUTF8File(String path){
try {
File file = new File(path);
CharsetPrinter detector = new CharsetPrinter();
String charset = detector.guessEncoding(file);
if(charset.equalsIgnoreCase(DefaultDestEncodeFormat)){
System.out.println(IsUtf8File);
return true;
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(FileNotFoundExceptionError);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(IOExceptionError);
}
System.out.println(IsNotUtf8File);
return false;
}
public static String transfer(String context,String encodeFormat) {
if(encodeFormat==null || encodeFormat.equals(""))
encodeFormat = DefaultDestEncodeFormat;
try {
byte[] content = context.getBytes();
String result = new String(content,encodeFormat);
return result;
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
System.out.println(UnsupportedEncodingExceptionError);
e.printStackTrace();
}
return "";
}
public static void writeFile(String context,String path,String destEncode){
File file = new File(path);
if(file.exists())
file.delete();
BufferedWriter writer;
try {
FileOutputStream fos = new FileOutputStream(path,true);
writer = new BufferedWriter(new OutputStreamWriter(fos, destEncode));
writer.append(context);
writer.close();
} catch (IOException e) {
System.out.println(IOExceptionError);
e.printStackTrace();
}
}
public static void writeFile(String context,String path){
File file = new File(path);
if(file.exists())
file.delete();
Writer writer;
try {
writer = new FileWriter(file, true);
writer.append(context);
writer.close();
} catch (IOException e) {
System.out.println(IOExceptionError);
e.printStackTrace();
}
}
public static void transfer(String srcPath,String destPath,String srcEncode,String destEncode){
if(destPath==null || destPath.equals(""))
destPath = srcPath;
String context = readFile(srcPath,srcEncode);
context = transfer(context,destEncode);
writeFile(context,destPath,destEncode);
}
public static void transfer(String srcPath,String destPath,String destEncode){
if(isUTF8File(srcPath)){
transfer(srcPath,destPath,DefaultDestEncodeFormat,destEncode);
}else{
transfer(srcPath,destPath,DefaultSrcEncodeFormat,destEncode);
}
}
public static void main(String args[]){
String path1 = "f:/Notepad1.java";
String path2 = "f:/Notepad2.java";
transfer(path1,path2,"UTF-8");
transfer(path1,path2,"UTF-8","UTF-8");
}
}
主要jar包:cpdetector.jar
下载地址: http://cpdetector.sourceforge.net/
同时还需jchardet-1.0.jar这个包,否则detector.add(cpdetector.io.JChardetFacade.getInstance()); 会报错;
下载地址: http://www.jarfinder.com/index.php/jars/versionInfo/40297
还有一个antlr.jar,不然运行过程中detector.add(new ParsingDetector(false));会报错;
下载地址: http://www.java2s.com/Code/Jar/ABC/Downloadantlrjar.htm
Java文件编码格式转换的更多相关文章
- FilesCodingConvert--批量文件编码格式转换工具
FilesCodingConvert–批量文件编码格式转换工具 简介 最近开始学习使用Android Studio,因为它的方便易用,我打算以后就不在使用ADT的方式编写Android项目了.当从Ec ...
- java项目编码格式转换(如GBK转UTF-8)
昨天突然下了个Java项目,把项目导入到eclipse中,发现项目是gbk编码格式想把项目变为utf-8,但是发现转换格式比较麻烦就写了这个代码,后面改进了下,想到说不定有人也需要就把它写了出来 代码 ...
- Linux 文件编码格式转换
如果需要在Linux 中操作windows下的文件,那么经常遇到文件编码转换的问题. Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-. 查看文件编码 在vim 中 ...
- Linux下查看文件编码,文件编码格式转换和文件名编码转换
linux相关 2008-10-07 10:46 阅读1392 评论0 字号: 大大 中中 小小 如果你需要在Linux中 操作windows下的文件,那么你可能会经常遇到文件编 ...
- MacOS 自带文件编码格式转换工具
[命令功能]iconv 是Linux操作系统用于将文本编码格式从一种转外另外一种的工具命令.[使用方法] iconv [OPTION...] [-f ENCODING] [-t ENCODING] [ ...
- ubuntu 文件编码格式 转换
正在学习jquery,之前在windows下弄的编码到了 ubuntu下,乱码: 找到一个方法: iconv : 源文件:a.htm 格式:gbk: 目标: a.html 格式:utf8: ic ...
- 在Vim中查看文件编码和文件编码转换
在Vim中查看文件编码和文件编码转换 风亡小窝 关注 0.2 2016.09.26 22:43* 字数 244 阅读 5663评论 0喜欢 2 在Vim中查看文件编码 :set fileencodi ...
- 解决eclipse中的Java文件,使用idea打开的乱码问题
吐槽: 在克隆一些Github上面资源的时候,使用idea打开,会出现乱码的情况 而使用eclipse打开,这种情况就会消失.「是因为eclipse使用的是GBK编码,idea使用的是utf-8」 这 ...
- Linux查看文件编码格式及文件编码转换
Linux查看文件编码格式及文件编码转换 如果你需要在Linux 中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而L ...
随机推荐
- [SAP ABAP开发技术总结]字段符号FIELD-SYMBOLS
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- Javascript获取地址栏参数值
采用正则表达式获取地址栏参数: function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +&q ...
- CSS笔记(四)文本
CSS 文本属性可定义文本的外观.通过文本属性,可以改变文本的颜色.字符间距,对齐文本,装饰文本和对文本进行缩进,等等. 参考:http://www.w3school.com.cn/css/css_t ...
- ASP.Net MVC4中封装CSS和js冗余代码(不让其大篇的显示在前台上)
(1)封装CSS和JS代码,使用调用的方式在前台进行调用.是开发看起来简洁和易于管理,可达到重用. 由于asp.netMVC4 框架 ,在封装js和CSS的时候,有如下规范: using Syst ...
- 转-Android Studio *.jar 与 *.aar 的生成与*.aar导入项目方法
主要讲解Android Studio中生成aar文件以及本地方式使用aar文件的方法. 在Android Studio中对一个自己库进行生成操作时将会同时生成*.jar与*.aar文件. 分别存储位置 ...
- 2013/7/17 HNU_训练赛5
sgu 542 Gena vs Petya sgu 543 Cafe 题意:有N组人需要被分配到某些固定了人数的桌子上,其中ai表示第i组有多少个人,安排作为需要符合如下安排:某一组的人员不能够单独在 ...
- 阿里商业评论 | 互联网POI数据及其在营销中的应用
阿里商业评论 | 互联网POI数据及其在营销中的应用 时间 2014-11-05 10:40:50 阿里研究院 原文 http://www.aliresearch.com/index.php?m- ...
- springmvc:frameServletBean
1.httpservlerBean 主要初始化web.xml的init-param参数 2.frameWorkServlet 该类作用 1.applicationConetxt用于配置整体 webap ...
- 07 SQL优化技术
本章提要------------------------------------------------------调优技术及什么时候使用------------------------------- ...
- C++中的虚继承 & 重载隐藏覆盖的讨论
虚继承这个东西用的真不多.估计也就是面试的时候会用到吧.. 可以看这篇文章:<关于C++中的虚拟继承的一些总结> 虚拟基类是为解决多重继承而出现的. 如:类D继承自类B1.B2,而类B1. ...