用java组合文件

用java组合文件,java,file-io,inputstream,fileoutputstream,Java,File Io,Inputstream,Fileoutputstream,我已将一个文件拆分为两个文件,如果我尝试将它们合并回来,则无法打开该文件。我遇到错误“打开此文档时出错。文件已损坏,无法修复。” import java.io.BufferedInputStream; 导入java.io.BufferedOutputStream; 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.FileOutputStream; 导入java.io.IOException; 导入java.io.InputStream;

我已将一个文件拆分为两个文件,如果我尝试将它们合并回来,则无法打开该文件。我遇到错误“打开此文档时出错。文件已损坏,无法修复。”

import java.io.BufferedInputStream;
导入java.io.BufferedOutputStream;
导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
公共类组合文件{
公共静态void main(字符串[]args)引发IOException{
文件f1=新文件(“C:\\Users\\Desktop\\copie1.pdf”);
InputStream if1=新文件InputStream(f1);
BufferedInputStream bf1=新的BufferedInputStream(if1);
文件f2=新文件(“C:\\Users\\Desktop\\copie2.pdf”);
FileInputStream if2=新的FileInputStream(f2);
BufferedInputStream bf2=新的BufferedInputStream(if2);
文件f3=新文件(“C:\\Users\\Desktop\\merge.pdf”);
FileOutputStream of 3=新的FileOutputStream(f3);
BufferedOutputStream bf3=新的BufferedOutputStream(of3);
int packetsize=1024;
double-nosofpackets=Math.ceil((int)(新文件(“C:\\Users\\Desktop\\NAV_7.pdf”)).length())/packetsize);
System.out.println(无包装);
int字节读取=0;
字节[]缓冲区=新字节[1024];

对于(int i=0;i当您从流中读取数据时,
read
方法可能无法用数据完全填充缓冲区。它返回实际读取的字节数。它还用返回值-1表示文件结束。您不能忽略返回值

        bytesRead = bf1.read(buffer, 0,buffer.length);
        if (bytesRead < 0) {
            // handle end of file!
        }
        bf3.write(buffer, 0, bytesRead);
bytesRead=bf1.read(buffer,0,buffer.length);
如果(字节读取<0){
//处理文件的结尾!
}
bf3.写入(缓冲区,0,字节读取);

我不认为您可以将两个pdf中的字节粘贴到一个文件中,然后合并一个文件。我怀疑这有点复杂。您是如何分割文件的?使用pdf工具还是只是将一个较大的文件分解成较小的块?您是否希望部分文件
copie1.pdf
copie2.pdf
是否为有效的pdf文件?请查看此帖子:
        bytesRead = bf1.read(buffer, 0,buffer.length);
        if (bytesRead < 0) {
            // handle end of file!
        }
        bf3.write(buffer, 0, bytesRead);