2

あるpdfファイルを別のpdfファイルにコピーするためにこのプログラムを作成しましたが、.txtファイルのo/pで突然のフィールドが発生します。このコードは正常に機能しています。

コード:

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();
        }
    }
}
4

2 に答える 2

4

これは、int とバイトが混在しているためです。これは期待どおりに動作するはずです:

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

特に、fs.read()255 を(byte) fs.read返す場合は -1 を返します。

于 2012-12-18T13:10:38.657 に答える
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();
}
于 2012-12-18T13:25:30.327 に答える