system.arraycopy也没有抛出异常但也没有给出期望的结果

时间:2013-06-10 16:05:53

标签: java bytearray concatenation system.array

我有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数据

2 个答案:

答案 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数据。

我无法弄清楚这种情况下的问题是什么