黑马程序员技术交流社区

标题: io流 [打印本页]

作者: 凝聚    时间: 2013-10-23 11:15
标题: io流
本帖最后由 凝聚 于 2013-10-23 21:24 编辑

package Nineteen;
import java.io.*;
public class nine {
        public static void main(String[] args)throws IOException
        {
                //FileReader fr=new FileReader("D:\\wo.doc");
                FileReader fr=new FileReader("s.doc");
        LineNumberReader line=new LineNumberReader(fr);
        String str=null;
        while((str=line.readLine())!=null)
        {
                System.out.println(line.getLineNumber()+":"+str);
        }
        line.close();
        }

}
这段代码中FileReader fr=new FileReader("s.doc");这句话中的“s.doc"word文档是自己写的保存在默认路径下的,读出来却是乱码,而用代码生成的文件就能读出来,这是怎么回事啊,求大神帮忙。


作者: 深情小建    时间: 2013-10-23 11:43
应该是编码的问题,你电脑可能默认是GBK编码,但是你数据保存的时候用的是UTF-8的数据。然后就出现了,再打开显示乱码的问题。
作者: 王松松    时间: 2013-10-23 11:44
你试一试用txt文件试一下看看是不是乱码!
作者: 凝聚    时间: 2013-10-23 11:49
txt文档不是乱码
作者: 凝聚    时间: 2013-10-23 11:53
深情小建 发表于 2013-10-23 11:43
应该是编码的问题,你电脑可能默认是GBK编码,但是你数据保存的时候用的是UTF-8的数据。然后就出现了,再打 ...

该怎么办
作者: 深情小建    时间: 2013-10-23 12:02
大神耶,,,读取word要用特定的类, 你这个方法只能读取文本类型的文件

加上poi-3.0.2的两个jar包

File file = new File(doc);
FileInputStream fileInputStream = getFileInputStream(file);
WordExtractor wordExtractor = new WordExtractor(fileInputStream);
String text = wordExtractor.getText();


作者: 1961993790    时间: 2013-10-23 12:05
这是因为编码方式不同所导致,需要使用和记事本一样的编码格式对文件进行解析,就能正常显示了,
而word和记事本文件编码不同,所以解析出来的文字显示出乱码!希望对您有帮助。{:soso_e100:}
作者: 凝聚    时间: 2013-10-23 12:15
1961993790 发表于 2013-10-23 12:05
这是因为编码方式不同所导致,需要使用和记事本一样的编码格式对文件进行解析,就能正常显示了,
而word和 ...

但是它能解析word 文档啊,只是这个文档是代码生成的word文档“FileWrite"写的,但是我手动的亲自建一个word文档写上点内容后就变成了乱码。
作者: 1961993790    时间: 2013-10-23 13:53
为了指定文件的编码方式:
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFilename),"编码方式")));

试试{:soso_e100:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2