我有2个字节的数组。 我正在使用system.arraycopy连接。 它不会抛出异常,但结果流只显示第二个数组数据
byte mainPdf[] = generatePDF(creditAppPDFurl, cifNumber,appRefId,pdfid1,appTransId);
byte supportingPdf[] = generateSupportingDocPDF();
byte[] destination = new byte[mainPdf.length + supportingPdf.length];
System.arraycopy(mainPdf, 0, destination, 0, mainPdf.length);
System.arraycopy(supportingPdf, 0, destination, mainPdf.length, supportingPdf.length);
pdfInputStreamData = new ByteArrayInputStream(destination);
pdfInputStreamData仅显示supportsPdf数据
答案 0 :(得分:2)
您的代码很好,错误在其他地方。特别是,原始数组可能不包含您期望的信息。
您可以尝试这个简单的示例来确认代码的数组连接部分有效:
public static void main(String[] args) throws Exception {
byte mainPdf[] = {1, 2, 3};
byte supportingPdf[] = {4, 5, 6};
byte[] destination = new byte[mainPdf.length + supportingPdf.length];
System.arraycopy(mainPdf, 0, destination, 0, mainPdf.length);
System.arraycopy(supportingPdf, 0, destination, mainPdf.length, supportingPdf.length);
System.out.println(Arrays.toString(destination));
}
打印[1, 2, 3, 4, 5, 6]
。
答案 1 :(得分:0)
对于上述相同的编码线, 我跑的时候
pdfInputStreamData = new ByteArrayInputStream(mainPdf);
它为第一个字节[]提供了正确的数据。
当我跑步时
pdfInputStreamData = new ByteArrayInputStream(supportingPdf);
它为第二个字节[]提供了正确的数据。
但最后一行
byte[] destination = new byte[mainPdf.length + supportingPdf.length];
System.arraycopy(mainPdf, 0, destination, 0, mainPdf.length);
System.arraycopy(supportingPdf, 0, destination, mainPdf.length, supportingPdf.length);
pdfInputStreamData = new ByteArrayInputStream(destination);
在打印时仅提供supportPdf数据。
我无法弄清楚这种情况下的问题是什么