自动识别编码读取和写入文件
2015-10-29 10:17
543 查看
public class FileTraning {
/**
* 判断文件的编码格式
* @param fileName :file
* @return 文件编码格式
* @throws Exception
*/
public static String codeString(String fileName) throws Exception{
BufferedInputStream bin = new BufferedInputStream(
new FileInputStream(fileName));
int p = (bin.read() << 8) + bin.read();
String code = null;
switch (p) {
case 0xefbb:
code = "UTF-8";
break;
case 0xfffe:
code = "Unicode";
break;
case 0xfeff:
code = "UTF-16BE";
break;
default:
code = "GBK";
}
return code;
}
public static String readFile(String filePathAndName,String code) {
String fileContent = "";
try {
File f = new File(filePathAndName);
if(f.isFile()&&f.exists()){
InputStreamReader read = new InputStreamReader(new FileInputStream(f),code);
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;
}
read.close();
}
} catch (Exception e) {
System.out.println("读取文件内容操作出错");
e.printStackTrace();
}
return fileContent;
}
public static void writeFile(String filePathAndName, String fileContent, String code) {
try {
File f = new File(filePathAndName);
if (!f.exists()) {
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),code);
BufferedWriter writer=new BufferedWriter(write);
writer.write(fileContent);
writer.close();
} catch (Exception e) {
System.out.println("写文件内容操作出错");
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "c:/1.txt";
String code = "";
try {
code = codeString(fileName);
System.out.println(code);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(readFile(fileName,code));
writeFile(fileName,"中文测试修改内容",code);
}
}
/**
* 判断文件的编码格式
* @param fileName :file
* @return 文件编码格式
* @throws Exception
*/
public static String codeString(String fileName) throws Exception{
BufferedInputStream bin = new BufferedInputStream(
new FileInputStream(fileName));
int p = (bin.read() << 8) + bin.read();
String code = null;
switch (p) {
case 0xefbb:
code = "UTF-8";
break;
case 0xfffe:
code = "Unicode";
break;
case 0xfeff:
code = "UTF-16BE";
break;
default:
code = "GBK";
}
return code;
}
public static String readFile(String filePathAndName,String code) {
String fileContent = "";
try {
File f = new File(filePathAndName);
if(f.isFile()&&f.exists()){
InputStreamReader read = new InputStreamReader(new FileInputStream(f),code);
BufferedReader reader=new BufferedReader(read);
String line;
while ((line = reader.readLine()) != null) {
fileContent += line;
}
read.close();
}
} catch (Exception e) {
System.out.println("读取文件内容操作出错");
e.printStackTrace();
}
return fileContent;
}
public static void writeFile(String filePathAndName, String fileContent, String code) {
try {
File f = new File(filePathAndName);
if (!f.exists()) {
f.createNewFile();
}
OutputStreamWriter write = new OutputStreamWriter(new FileOutputStream(f),code);
BufferedWriter writer=new BufferedWriter(write);
writer.write(fileContent);
writer.close();
} catch (Exception e) {
System.out.println("写文件内容操作出错");
e.printStackTrace();
}
}
public static void main(String[] args) {
String fileName = "c:/1.txt";
String code = "";
try {
code = codeString(fileName);
System.out.println(code);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(readFile(fileName,code));
writeFile(fileName,"中文测试修改内容",code);
}
}
相关文章推荐
- Shell统计
- 7.5 捕获鼠标
- IOS-系统自带社交分享
- SWIFT——数组的创建和初始化
- 编辑器里面不出现的entity wmignore
- YT环境安装
- 机房收费系统——数据要求说明书
- LaTeX大括号用法
- 软连接
- 商品标签例子——CSS3 transform 属性
- if( !ig.global.wm )只产生一次就够了
- !代码:页面布局
- css以及css3中的选择器
- LeetCode 257: Binary Tree Paths
- ASCII码对应表
- Android 07:Android的国际化应用
- Web.xml配置详解之context-param
- iOS9下App Store新应用提审攻略
- Solr DisMax 分析
- DT时代即将到来