尝试以块的形式而不是一次性恢复BackupAgent中的数据时发生IOException

时间:2015-06-07 11:59:44

标签: android restore

我实现了自定义BackupAgent,部分数据是大约1 MB的图像。创建备份时,每个图像都作为单独的实体写入。在恢复图像时,我想以这样的4K(BUFFER_SIZE)块读取数据并将其写入如下文件:

FileOutputStream out = new FileOutputStream(file);
byte[] buffer = new byte[BUFFER_SIZE];
int offset = 0;
int n = 0;
// readEntityData returns 0 when all data of entity is read
while (0 != (n = data.readEntityData(buffer, offset, BUFFER_SIZE))) {
    out.write(buffer, 0, n);
    offset += n;
}

但是,这只能正确地读取第一个4K块,在第二次调用readEntityData时会抛出错误代码为0xffffffff的IOException。

当我使缓冲区与实体的数据大小一样大并且一次读取所有数据时,它可以很好地工作,但我认为使用较小的缓冲区会更安全。

有没有人经历过这样的事情?我发现的所有示例都是一次读取数据而不是多个块。

0 个答案:

没有答案