public static void charTest()throws Exception{
String sourcePath = "F:\\下载文件\\aaa.doc";
String destination = "F:\\";
destination += sourcePath.substring(sourcePath.lastIndexOf("\\"));

FileReader fr = new FileReader(sourcePath);
BufferedReader br = new BufferedReader(fr);

FileWriter fw = new FileWriter(destination);
BufferedWriter bw = new BufferedWriter(fw);

String temp = null;
String str = null;
while((temp = br.readLine()) != null){
         System.out.println(str);
// bw.write(temp);
}
bw.flush();
bw.close();
fw.close();
br.close();
fr.close();
}输出的全是乱码,请高手指点小弟一下

解决方案 »

  1.   

    ...
    当然是乱码了,word文档不是普通的文本文件
      

  2.   

    word文档有它自己的加密格式,不能像读取普通文本那样,要借助其它的API
    如POI读一个普通的word文档import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;import org.apache.poi.hwpf.extractor.WordExtractor;public class MyWordExtractor { public static void main(String[] args) {
        File file = new File("E:\\测试文档.doc");
        try {
          FileInputStream fis = new FileInputStream(file);
          WordExtractor wordExtractor = new WordExtractor(fis);
          System.out.println("【 使用getText()方法提取的Word文件的内容如下所示:】");
          System.out.println(wordExtractor.getText());
        } catch (FileNotFoundException e) {
          e.printStackTrace();
        } catch (IOException e) {
         e.printStackTrace();
       }
      }
    }
      

  3.   

    需要导入aparch poi包
    下载地址:http://apache.mirrors.evolva.ro/poi/dev/bin/poi-bin-3.5-beta5-20090219.zip
    解压缩后,把目下的4个jar包放到classpathimport java.io.*;
    import org.apache.poi.hwpf.extractor.WordExtractor;
    import org.apache.poi.POIOLE2TextExtractor;class ReadWord {
       public static void charTest()throws Exception{ 
          FileInputStream in = new FileInputStream(
             new File("E:/tool/javatraning/ReadWord/test.doc"));
          WordExtractor extractor = new WordExtractor(in);
          System.out.println(extractor.getText());
       }    public static void main(String[] args) {
          try {
             charTest();
          }
          catch(Exception e) {
             e.printStackTrace();
          }
          
       }
    }
      

  4.   

     softroad :我想请问:读excel、图片之类的也可以用这个poi包的方法吗?
      

  5.   

    当然可以啦。
    具体可以参考http://hi.baidu.com/sun_giser/blog/item/f74a5f31682e3d91a9018ee3.html
      

  6.   

    "F:\\下载文件\\aaa.doc"; DOC读不了哦DOC每年都在变 M$恶心的很换个TXT读
      

  7.   

    读取文本文件可以用BufferedReader,二进制的文件是不可以的。
    参考下面的例子static final int BUFFER_SIZE = 4096;
    public static boolean cp(String src, String dst){
    File srcFile = new File(src);
    if(!srcFile.exists()){
    return false;
    }
    FileInputStream in = null;
    FileOutputStream out = null;
    try{
    in = new FileInputStream(new File(src));
    out = new FileOutputStream(dst);
    byte[] buffer = new byte[BUFFER_SIZE];
    int bytes = 0;
    while((bytes = in.read(buffer)) > 0){
    out.write(buffer, 0, bytes);
    }
    out.flush();
    }catch(IOException e){
    return false;
    }finally{
    if(in != null){
    try{
    in.close();
    }catch(IOException e){

    }
    }
    if(out != null){
    try{
    in.close();
    }catch(IOException e){

    }
    }
    }
    return true;
    }
    上面是copy文件的代码,你可以使用其中的读取部分,写入部分去掉就可以。