我最近決定將我的3d模型格式轉換爲二進制文件而不是ASCII,希望能夠提高速度......我閱讀了一些java教程和最簡單的閱讀方式我的格式似乎是使用ObjectInputStream和readLong()和readFloat()命令的混合...但我似乎無法讓代碼工作...使用ObjectInputStream從資產中讀取二進制文件
這是我的測試代碼:
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)
IOException詳細說明了什麼?你確定,文件存在於給定的路徑中嗎?它實際上是一個「長」嗎? – Fildor