黑马程序员技术交流社区
标题:
.doc文档用字符流读取出现乱码
[打印本页]
作者:
王红潮
时间:
2012-9-14 16:30
标题:
.doc文档用字符流读取出现乱码
个人觉得word文档应该是字符文本,但用字符流读取写入均出现乱码
public static void method1() throws FileNotFoundException, IOException {
FileReader fr = new FileReader("f:\\io\\java.doc");
FileWriter fw = new FileWriter("f:\\io\\javacopy.doc");
BufferedReader bufr = new BufferedReader(fr);
BufferedWriter bufw = new BufferedWriter(fw);
String line = null;
while((line = bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
fw.close();
fr.close();
}
复制代码
拷贝出现乱码,而且比源文件小
public static void method2() throws IOException {
BufferedReader bufr = new BufferedReader(new InputStreamReader(new FileInputStream("f:\\io\\java.doc")));
//BufferedWriter bufw = new BufferedWriter(new FileWriter("f:\\io\\javacopy.doc")); //与下面一样乱码
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("f:\\io\\javacopy.doc")));
String line = null;
while((line = bufr.readLine())!=null){
bufw.write(line);
bufw.newLine();
bufw.flush();
}
bufw.close();
bufr.close();
}
复制代码
依然是乱码,并且比源文件小
public static void method3() throws IOException {
BufferedInputStream bufis = new BufferedInputStream(new FileInputStream("f:\\io\\java.doc"));
BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream("f:\\io\\javacopy.doc"));
int ch = 0;
while((ch=bufis.read())!=-1){
bufos.write(ch);
}
bufos.close();
bufis.close();
}
复制代码
用字节流拷贝正常
world文档里面都是字符文本吗,为什么用字符流读取写入会出现问题,用转换流也出现问题,只能用字节流,还是world文档有特殊的编码,需要转码?
作者:
马睿
时间:
2012-9-14 16:35
……你读的是doc文件
JAVA提供的读取是读取txt系统文本文件,DOC属于微软MS WORD的关联格式。。。读出来当然是乱码了
读出来的是你把DOC文件直接用TXT强行打开的乱码……
换成TXT就正常了,如果一定要读取DOC必须用其他方法
作者:
小黑马
时间:
2012-9-14 16:36
word自定义格式比如项目符号啊,加入方框啊什么的,这种自定义后你用字符流读取就会乱码,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2