如何读取一个文件,用某种特定的编码写入另一个文件(JAVA)
下午同事给了一个电影的字幕文件,发现是乱码,偶觉得可能是编码问题,可是改了好几个编码还是不行,最后借助word才知道原来是Big5编码,于是我想到用程序来自动识别编码,可...
下午同事给了一个电影的字幕文件,发现是乱码,偶觉得可能是编码问题,可是改了好几个编码还是不行,最后借助word才知道原来是Big5编码,于是我想到用程序来自动识别编码,可是不知道怎么写。然后我又想,我以字符流或字节流的方式读取这个文件(这个应该和编码没关系吧),然后按照某种指定编码输出到一个文件,可是搜索了半天,只查到以某种编码读出这个文件,我的意思就是说,我们不知道这个文件的原来编码,我们用一种和编码无关的方法读取这个文件,然后自己按照某种编码写入txt文件,这个编码可一个一个试,应该能正确输出她原先的格式吧。大家看这个如何写
用java写
怎么没人帮我啊 展开
用java写
怎么没人帮我啊 展开
2个回答
展开全部
import java.io.File;
import java.io.IOException;
public class CovertEncode {
public static void main(String args[]) throws Exception {
CovertFile("d:\\1.txt");
}
public static void CovertFile(String filename) throws IOException {
String backupfilename = filename + ".backup";
File f = new File(filename);
File outf = new File(backupfilename);
f.renameTo(outf);
java.io.FileInputStream in = new java.io.FileInputStream(backupfilename);
java.io.InputStreamReader isr = new java.io.InputStreamReader(in, "Big5");
java.io.BufferedReader br = (new java.io.BufferedReader(isr));
// open output stream
java.io.FileOutputStream out = new java.io.FileOutputStream(filename);
java.io.BufferedWriter bw = new java.io.BufferedWriter(
new java.io.OutputStreamWriter(out, "GBK"));
char[] buffer = new char[4096];
int len;
while ((len = br.read(buffer)) != -1)
bw.write(buffer, 0, len);
br.close();
bw.flush();
bw.close();
outf.deleteOnExit();
}
}
import java.io.IOException;
public class CovertEncode {
public static void main(String args[]) throws Exception {
CovertFile("d:\\1.txt");
}
public static void CovertFile(String filename) throws IOException {
String backupfilename = filename + ".backup";
File f = new File(filename);
File outf = new File(backupfilename);
f.renameTo(outf);
java.io.FileInputStream in = new java.io.FileInputStream(backupfilename);
java.io.InputStreamReader isr = new java.io.InputStreamReader(in, "Big5");
java.io.BufferedReader br = (new java.io.BufferedReader(isr));
// open output stream
java.io.FileOutputStream out = new java.io.FileOutputStream(filename);
java.io.BufferedWriter bw = new java.io.BufferedWriter(
new java.io.OutputStreamWriter(out, "GBK"));
char[] buffer = new char[4096];
int len;
while ((len = br.read(buffer)) != -1)
bw.write(buffer, 0, len);
br.close();
bw.flush();
bw.close();
outf.deleteOnExit();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询