我正在尝试序列化/反序列化位图。android how to save a bitmap - buggy code的答案非常有帮助。但是,当我去阅读我的数组时:
private void readObject(ObjectInputStream in) throws IOException,
ClassNotFoundException {
int rowBytes = in.readInt();
int height = in.readInt();
int width = in.readInt();
int bmSize = rowBytes * height; // Ends up being 398208
ByteBuffer byteBuffer = ByteBuffer.allocate(bmSize);
int bytesRead = in.read(byteBuffer.array(), 0, bmSize);
// Use array to create bitmap here
}
它正在读取 1008 个字节,而不是我写的 398208 个字节。我用循环替换了调用,效果很好:
for (int i = 0; i < bmSize; i++) {
byteBuffer.array()[i] = in.readByte();
}
可能出了什么问题?不会抛出异常。ObjectInputStream.read(byte[], int, int)的文档表明它应该提前返回的唯一原因是它是否到达流的末尾,这显然不是因为我的解决方法不会引发任何异常.