gpt4 book ai didi

java - ObjectInputStream.read(byte[], int, int) 缺少数据?

转载 作者:行者123 更新时间:2023-12-02 07:49:08 24 4
gpt4 key购买 nike

我正在尝试序列化/反序列化位图。答案在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) 的文档表示它应该提前返回的唯一原因是它是否到达流的末尾,这显然不是因为我的解决方法不会抛出任何异常。

最佳答案

文档有误。 ObjectInputStream 只是调用 inputStream 来读取字节。如果您希望它阻塞直到读取数据,请使用 readFully。

关于java - ObjectInputStream.read(byte[], int, int) 缺少数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10442761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com