【发布时间】:2012-11-19 10:45:52
【问题描述】:
我必须在 base64 中编码一个字节数组(即 Zipfile 的字节流),但数组太大。所以我将数组分成两部分,编码前半部分,然后编码第二部分,最后我将第二部分附加到第一部分。问题是,有时当我解码结果时,zipfile 似乎已损坏。
FileInputStream fis = new FileInputStream(new File(filePath));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len = fis.read(buffer)) >= 0) {
baos.write(buffer);
}
byte[] bArray = baos.toByteArray();
int bArrayLength = bArray.length;
byte[] part1 = new byte[bArray.length / 2];
byte[] part2 = new byte[ (bArrayLength%2 == 0) ? (bArray.length / 2) : (bArray.length / 2 + 1)];
System.arraycopy(bArray, 0, part1, 0, part1.length);
System.arraycopy(bArray, part1.length, part2, 0, part2.length);
resultArray[0] = Base64.encodeBytes(part1);
resultArray[1] = Base64.encodeBytes(part2);
有什么问题?是导致问题的分裂吗?
【问题讨论】:
-
你为什么不做一个测试:1(或 100)个小文件/字节数组,使用 split 和不使用它对其进行编码,解码它们并将两个结果与源进行比较。
-
我做了测试,比较两个结果我发现它们总是不同的,但在大多数情况下,最终的 zip 不会损坏,但在其他情况下是的,所以我可以'不拆分数组。
标签: split base64 decode encode