.pdf文件的java文件复制程序在输出中获取损坏的文件

时间:2012-12-18 13:04:51

标签: java fileinputstream

我写了这个程序,将一个pdf文件复制到其他文件但是我在o / p中得到了用于.txt文件的curupt fiel这个代码工作正常。

public class FileCopy {

    public static void main(String args[]) {

        try {
            FileInputStream fs = new FileInputStream("C:\\dev1.pdf");
            byte b;
            FileOutputStream os = new FileOutputStream("C:\\dev2.pdf");
            while ((b = (byte) fs.read()) != -1) {
                os.write(b);
            }
            os.close();
            fs.close();
        } catch (Exception E) {
            E.printStackTrace();
        }
    }
}

2 个答案:

答案 0 :(得分:3)

这是因为你正在混合整数和字节。这应该按预期工作:

int b;
while ((b = fs.read()) != -1) {
    os.write(b);
}

特别是,当fs.read()返回255时,(byte) fs.read返回-1。

答案 1 :(得分:3)

试试这个

try {          
   FileInputStream fs = new FileInputStream("C:\\dev1.pdf");

   FileOutputStream os = new FileOutputStream("C:\\dev2.pdf");
   while ((int b = (byte) fs.read()) != -1) {
       os.write(b);
   }
   os.close();
   fs.close();
} catch (Exception E) {
    E.printStackTrace();
}