【发布时间】:2010-12-27 12:06:49
【问题描述】:
所以我有一些代码可以从文件中读取一定数量的字节并返回结果字节数组(这基本上用于将文件分块以(最终)作为 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[],但它只有一半的数据。
【问题讨论】:
标签: java file file-io bytearray byte