import java.io.*;
public class BufferedTest
{
public static void main(String args[]) throws IOException
{

File f=new File("JPA学习笔记.doc");
File fc=new File("副本.doc");

FileInputStream fis=new FileInputStream(f);
InputStreamReader isr=new InputStreamReader(fis,"UTF-16");
BufferedReader br=new BufferedReader(isr);

FileOutputStream fos=new FileOutputStream(fc);
OutputStreamWriter osw=new OutputStreamWriter(fos,"UTF-16");

BufferedWriter bw=new BufferedWriter(osw);

String s=br.readLine();
    while(s!=null)
    {
     bw.write(s);
     bw.newLine();
     bw.flush();
     s=br.readLine();
    }
    br.close();
    isr.close();
    fis.close();
    bw.close();
    osw.close();
    fos.close();
}
}
本人想采用以上代码实现word文件的复制功能,但复制后的文件总是乱码,而且字节数目与源文件有偏差,
请高手指出错误之处。几种编码方式都试过了,就是不行。

解决方案 »

  1.   

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;public class BufferedTest1 {
    public static void main(String args[]) throws IOException { File f = new File("E:\\详细设计补充文档.doc");
    File fc = new File("E:\\详细设计补充文档1.doc");
    FileInputStream fis = new FileInputStream(f);
    FileOutputStream fos = new FileOutputStream(fc);
    byte[] b = new byte[256];
    int length ;
    while((length=fis.read(b))!=-1){
    fos.write(b);
    }
    fos.flush();
    fis.close();
    fos.close();
    System.out.println("Success!");
    }
    }
      

  2.   

    InputStream / OutputStream 是面向字节流。
    InputReader / OutputWriter 是面向字符流。如果你的处理要求二进制格式,就不可能用字符流而必须是字节流。
      

  3.   

    同样的代码换成txt文件就可以实现复制,而且没有乱码(InputStreamReader和OutputStreamWriter要换成GBK编码),为什么事word就不行?和word本身的编码有关吧,我在网上查到word的编码是UTF-16,请教高手啊