gpt4 book ai didi

java - 将 InputStream 类型转换为 ObjectInputStream

转载 作者:太空狗 更新时间:2023-10-29 16:15:43 25 4
gpt4 key购买 nike

我使用这段代码将一个 byte[][][][] 对象写入文件:

byte[][][][] allMaps = new byte[10][8][][];
allMaps = ...;
ObjectOutputStream outputStream = null;
try {
outputStream = new ObjectOutputStream(new FileOutputStream("all_maps"));
outputStream.writeObject(allMaps);
} catch (IOException e) {
...
}

现在我正在尝试将该 byte[][][][] 对象读入我的 Android 应用程序:

InputStream inputStream = getResources().openRawResource(
getResources().getIdentifier("raw/all_maps", "raw", getPackageName()) );
try {
byteMaps = (byte[][][][]) ((ObjectInputStream) inputStream).readObject();
} catch (OptionalDataException e) {
...

但是我得到这个错误(在以“byteMaps”开头的行中):

java.lang.ClassCastException: android.content.res.AssetManager$AssetInputStream cannot be cast to java.io.ObjectInputStream

为什么 inputStream 的类型是 AssetInputStream 而不是 java.io.InputStream

最佳答案

您通常不键入强制转换流,而是用适当的输入/输出流类包装(装饰)它们,以便以更简单的方式读取流的内容。在这里,你必须替换这个:

byteMaps = (byte[][][][]) ((ObjectInputStream) inputStream).readObject();

进入:

ObjectInputStream oos = new ObjectInputStream(inputStream);
try {
byteMaps = (byte[][][][]) oos.readObject();

关于java - 将 InputStream 类型转换为 ObjectInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28241204/

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