gpt4 book ai didi

java - 使用 ObjectInputStream 从 Assets 中读取二进制文件

转载 作者:行者123 更新时间:2023-11-29 21:58:51 27 4
gpt4 key购买 nike

我最近决定将我的 3d 模型格式转换为二进制文件而不是 ASCII,以期提高速度...我阅读了一些 Java 教程,阅读我的格式的最简单方法似乎是使用ObjectInputStream 以及 readLong() 和 readFloat() 命令的混合……但我似乎无法让代码正常工作……

这是我的测试代码:

void testLoadBin(String fileName, Context context){
try {
InputStream fis = context.getAssets().open(fileName);
ObjectInputStream is = new ObjectInputStream(fis);
long test;
test = is.readLong();
Log.i("World", "output" + test);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i("World", "ERROR");
}
}

在这个例子中,我只是试图从文件中读取第一个 LONG,但总是抛出 IOException,我不确定如何解决这个问题。

任何帮助都是有用的。


快速添加:堆栈跟踪错误输出:

09-18 00:16:08.559: INFO/World(3861): java.io.StreamCorruptedException
09-18 00:16:08.559: INFO/World(3861): at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:2369)
09-18 00:16:08.559: INFO/World(3861): at java.io.ObjectInputStream.<init>(ObjectInputStream.java:433)
09-18 00:16:08.559: INFO/World(3861): at org.ogl.ndkvbo.Screen.testLoadBin(Screen.java:6605)
09-18 00:16:08.559: INFO/World(3861): at org.ogl.ndkvbo.camState_intload.update(camState_intload.java:24)
09-18 00:16:08.559: INFO/World(3861): at org.ogl.ndkvbo.StateMachine.update(StateMachine.java:65)
09-18 00:16:08.559: INFO/World(3861): at org.ogl.ndkvbo.camera.update(camera.java:46)
09-18 00:16:08.559: INFO/World(3861): at org.ogl.ndkvbo.GameThread.run(GameThread.java:50)

最佳答案

如果要使用 ObjectInputStream(),则必须使用 ObjectOutputStream()。然而,没有什么可以阻止您,因为 ObjectInputStream 和 ObjectOutputStream 是从 DataOutputStream 和 DataInputStream 扩展而来的。

因此,如果您还可以在写入文件的位置发布代码 fragment ,那将会很有帮助。还要检查 InputStream fis = context.getAssets().open(fileName); 行中的 fis 是否正确,是否实际指向您打算从中读取的文件。

关于java - 使用 ObjectInputStream 从 Assets 中读取二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460566/

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