1

RecordStoreの列にバイト[]を書き込むことはできますか? たとえば、1 列目が byte[]、2 列目が String、3 列目が int のレコードを書きたいとします。

public void writeToRms(byte[] byteArray){
    RecordStore recordStore = RecordStore.openRecordStore("My recordStore", true);
    try{
        byte[] outputRecord;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        // i want to write the parameter **byteArray** here. What method should I use?
        dos.writeUTF("Name");
        dos.writeInt(ctr);
        dos.flush();
        outputRecord = baos.toByteArray();
        recordStore.addRecord(outputRecord, 0, outputRecord.length);
        recordStore.closeRecordStore();
        baos.reset();
        baos.close();
        dos.close();
    }catch(Exception e){}
}
4

2 に答える 2

0

わかった、別の解決策。byte[]RMS の列の 1 つに書き込みたい場合は、最初byte[]に文字列にエンコードするだけです。Base64String具体的には、RMSに書き込みます。

public void writeToRms(byte[] byteArray){
    RecordStore recordStore = RecordStore.openRecordStore("My recordStore", true);
    try{
        byte[] outputRecord;
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(baos);
        String encoded = Base64.encode(byteArray);
        dos.writeUTF(encoded);
        dos.writeUTF("Name");
        dos.writeInt(ctr);
        dos.flush();
        outputRecord = baos.toByteArray();
        recordStore.addRecord(outputRecord, 0, outputRecord.length);
        recordStore.closeRecordStore();
        baos.reset();
        baos.close();
        dos.close();
    }catch(Exception e){}
}

そして、それを取得するときは、エンコードされたものをデコードしStringbyte[].

于 2013-03-06T03:23:43.573 に答える