Skip to content Skip to sidebar Skip to footer

How To Convert Map To Bytes And Save To Internal Storage

How can I convert my Map to byte[], and then write it to internal storage? I currently have: try { FileOutputStream fos = context.openFil

Solution 1:

  1. Using serialization in java you can easily parse any serializable objects to byte stream. Try to use the ObjectInputStream and the ObjectOuputStream.

  2. Use json to restore. You can use google-gson to convert Java objects to JSON and vice-versa.

  3. Use Parcel in android. The class android.os.Parcel is designd to pass data between the components in android(activity, service), but you can still use it to do data persistence. Just remember do not send the data to internet since differenct platforms may have different algorithm to do parsing.

I wrote a demo for serialization , have a try.

publicstaticvoid main(String[] args) throws Exception {
    // Create raw data.
    Map<Integer, String> data = new HashMap<Integer, String>();
    data.put(1, "hello");
    data.put(2, "world");
    System.out.println(data.toString());

    // Convert Map to byte array
    ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
    ObjectOutputStream out = new ObjectOutputStream(byteOut);
    out.writeObject(data);

    // Parse byte array to Map
    ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
    ObjectInputStream in = new ObjectInputStream(byteIn);
    Map<Integer, String> data2 = (Map<Integer, String>) in.readObject();
    System.out.println(data2.toString());
}

Solution 2:

I know I am subscribing to an old thread but it popped out in my google search. So I will leave my 5 cents here:

You can use org.apache.commons.lang3.SerializationUtils which has these two methods:

/**
 * Serialize the given object to a byte array.
 * @param object the object to serialize
 * @return an array of bytes representing the object in a portable fashion
 */publicstatic byte[] serialize(Objectobject);

/**
 * Deserialize the byte array into an object.
 * @param bytes a serialized object
 * @return the result of deserializing the bytes
 */publicstaticObject deserialize(byte[] bytes);

Solution 3:

Either serialize like faylon mentioned, or implement your own mechanism to save and load your map. By saving, you iterate over all elements and save key-value pairs. By loading, you add them back. Implementing your own mechanism has the advantage that you can still use your persisted values when your program is used with another Java version.

Post a Comment for "How To Convert Map To Bytes And Save To Internal Storage"