我有两个AFP文件,我想将它们连接在一起,如何完成此操作。我已经使用BufferedInputStream和BufferedOutputStream编写了Java代码来连接它们,结果AFP格式不正确。我什至尝试使用linux cat,但会产生相同的错误结果。请帮忙。我不认为问题出在我的Java代码上,但是为了以防万一,我在下面发布了代码。

注意:一件奇怪的事是,如果我切换串联的顺序,那么它将产生正确的格式输出。例如,如果我将A.afp然后B.afp串联,则输出混乱,但是如果我将B.afp串联,那么A.afp则产生正确的格式结果。但是我需要A.afp出现在B.afp之前

public static void main(String[] args) {
    String filePath1 = "C:\\dev\\harry\\ETCC_data\\3199_FI_20_20110901143009.afp";
    String filePath2 = "C:\\dev\\harry\\ETCC_data\\3643_FI_49_20110901143006.afp";

    ConcatenateMain cm = new ConcatenateMain();
    cm.concate(filePath1, filePath2);
}

private void concate(String filePath1, String filePath2){
    BufferedInputStream bis1 = null;
    BufferedInputStream bis2 = null;
    FileInputStream inputStream1 = null;
    FileInputStream inputStream2 = null;
    FileOutputStream outputStream = null;
    BufferedOutputStream output = null;
    try{
        inputStream1 = new FileInputStream(filePath1);
        inputStream2 = new FileInputStream(filePath2);
        bis1 = new BufferedInputStream(inputStream1);
        bis2 = new BufferedInputStream(inputStream2);
        List<BufferedInputStream> inputStreams = new ArrayList<BufferedInputStream>();
        inputStreams.add(bis1);
        inputStreams.add(bis2);
        outputStream = new FileOutputStream("C:\\dev\\harry\\ETCC_data\\output.afp");
        output = new BufferedOutputStream(outputStream);
        byte [] buffer = new byte[BUFFER_SIZE];
        for(BufferedInputStream input : inputStreams){
            try{
                int bytesRead = 0;
                while ((bytesRead = input.read(buffer, 0, buffer.length)) != -1)
                {
                    output.write(buffer, 0, bytesRead);
                }
            }finally{
                input.close();
            }
        }
    }catch(IOException e){

    }finally{
        try {
            output.close();
        } catch (IOException e) {

        }
    }
}

最佳答案

Xenos D2e软件默认生成的AFP在页面顶部包含内联资源,例如

AFP file 1 resources       AND        AFP file 2 resources
AFP file 1 content                    AFP file 2 content

但是,当我尝试将这两个文件连接在一起时,一些资源将位于连接文件的中间,因此弄乱了结果
AFP file 1 resources
AFP file 1 content
AFP file 2 resources ------> resources should not be in the middle page
AFP file 2 content

因此解决方案是将所有资源导出到外部文件,然后可以按如下所示进行串联
AFP file resources
AFP file 1 content
AFP file 2 content

这样可以解决问题。

09-30 23:40