我有两个AFP文件,想要将它们连接起来,我该如何实现?我已经写了Java代码来连接它们,使用BufferedInputStream和BufferedOutputStream,但结果的AFP格式不正确。我甚至尝试使用Linux的cat命令,但结果也是错误的。请帮忙解决。我不认为问题出在我的Java代码上,但我还是把代码附在下面以备不时之需。
注意:一个奇怪的事情是,如果我交换连接顺序,那么输出就会是正确的格式。例如,如果我先连接A.afp然后B.afp,那么输出就会混乱,但如果我先连接B.afp,然后再连接A.afp,那么输出就会是正确的格式。但我需要A.afp出现在B.afp之前。
注意:一个奇怪的事情是,如果我交换连接顺序,那么输出就会是正确的格式。例如,如果我先连接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) {
}
}
}