我有一些代码,可以从文件中读取特定数量的字节并返回结果字节数组(这基本上用于将文件分块以发送到网络上,最终是base64编码的ASCII文本)。
它工作得很好,但是当生成文件的最后一个块时,它不是完整的块。因此,生成的字节数组不是完整的。但是,它是一个常量大小,这意味着当文件重新组合时,会在末尾附加一堆额外的数据(可能是0)。
如何使文件的最后一个块的byte[]只包含它需要的数据? 代码看起来像这样:
private byte[] readData(File f, int startByte, int chunkSize) throws Exception {
RandomAccessFile raf = new RandomAccessFile(f, "r");
raf.seek(startByte);
byte[] data = new byte[chunkSize];
raf.read(data);
raf.close();
return data;
}
如果chunkSize大于文件中剩余的字节数,则会返回一个完整大小的byte[],但其中只填充了一半的数据。
==
而不是=
。 - notnoopSystem.arraycopy()
抛出了什么异常? - AsaphSystem.arraycopy()
的最后一个参数应该是bytesRead
而不是chunkSize
。呃!对此感到抱歉。请尝试使用我的更新答案并确认它已经修复了问题。谢谢 :) - Asaph