4

私は基本的に、いくつかの大きな配列 (約 500 万short) を Android ですばやく保存して再読み込みする方法を探しています。私のアプリは、後でそれらに戻ることができる方法でそれらを保存する必要があるため、それらをメモリに保持することはできません...

これまでのところ、それらをbyte[]配列に変換しようとしましたが、正常に保存されているように見えますが、データを元に戻すことはできません。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOuputStream oos = new ObjectOutputStream(baos);
oos.writeObject(data);
oos.close();
baos.close();
FileOutputStream fos = new FileOutputStream(filename); // valid absolute path
fos.write(baos.toByteArray());
fos.close();

そして、読み込み部分は私が行き詰まる場所です。どうすれば ashort[]から aを取得できbyte[]ますか? また、データベースも機能する可能性があると読みましたが、十分に高速ですか?

私は Stackoverflow と Google の周りを見回しましたが、同様の問題を抱えている人、または少なくともその解決策を見つけることができないようですが、初心者として明らかなことを見落としている可能性があります...

4

3 に答える 3

1

ByteArrayOutputStream/を介してバッファリングせずに、ファイル ストリームを直接使用しますByteArrayInputStream。はbyte[]メモリに保持され、大量のデータには適していません。

に書き込むと、new ObjectOutputStream(new FileOutputStream(filename))を使用してオブジェクトを取り戻すことができますnew ObjectInputStream(new FileInputStream(filename))必要に応じて、 Christopher's answerに記載されているように、バッファリングを行うこともできます。

于 2013-08-07T17:21:19.703 に答える
0

おそらくここでメソッドを使用できます:バイト配列を短い配列に戻し、再びJavaに戻し、バイト配列を読み書きするだけです。FileOutputStream だけでなく、BufferedOutputStreamを使用することもお勧めします。

于 2013-08-07T17:18:29.313 に答える