0

私は何時間もこれを理解しようとしてきました、そしてそれはとてもイライラします!このメソッド「saveDataToDisk(Objecto)」に渡すオブジェクトである「ハッシュテーブル」をシリアル化しています。これを通常のJavaプロジェクトでテストし、「toByteArray()」を正しく実行しますが、AndroidではtoByteArray()にヒットするたびに、常にキャッチに入ります...何かアイデアはありますか?前もって感謝します。

public static byte[] saveDataToDisk(Object o)
{
    // Storing the data into byte streams.
    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    try
    {
        ObjectOutputStream out = new ObjectOutputStream(bos);
        out.writeObject(o);
        out.close();
        // Get the bytes of the serialized object
        byte[] buf = bos.toByteArray();

        return buf;
    }
    catch (IOException ioe)
    {
        return null;
    }
}
4

2 に答える 2

1

私はあなたのユースケースを実行しようとしましたが、私にとってはうまくいくようです。以下のコードを参照してください。バイト配列を取得します:[-84、-19、0、5、116、0、2、72、105]

public class WriteObject extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_1);
    Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new OnClickListener(){
        String s = "Hi";
        @Override
        public void onClick(View v) {
            byte[] b = WriteObject.saveDataToDisk(s);
            Log.i("", b.toString());

        }

    });
}
public static byte[] saveDataToDisk(Object o){
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    byte[] buf = null;
    try{
        ObjectOutputStream out = new ObjectOutputStream(bos);
        out.writeObject(o);
        out.close();
        buf = bos.toByteArray();
    }catch (IOException ioe){
        Log.e("", ioe.toString(),ioe);
    }
    return buf;
}

}
于 2011-11-15T02:53:59.533 に答える
0

私はこれを見つけまし

ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(obj);
oos.flush();
oos.close();
bos.close();
byte [] data = bos.toByteArray();
return data;

だからあなたは試してみたいかもしれません.flush()

于 2011-11-15T02:54:02.047 に答える