I want to use a file system to store and retrieve data. My code works fine in the latest version, such as Android 4.1 and 4.4. But it does not work, and it gives an error in Android 2.3. I am writing an object from another class, and the object is an Arraylist, and also reading an object from the same class. Please help me. Thanks in advance.
Below is my class .
package com.app.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.NumberFormat;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Map.Entry;
import java.util.Set;
import android.content.Context;
import android.util.Log;
public final class StorageHelper
{
public static Set<String> rec_news = new LinkedHashSet<String>();
public StorageHelper() {
super();
}
public static void writeObject(Context context, String key, Object object)
throws IOException, ClassNotFoundException {
FileOutputStream fos = context.openFileOutput(key, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(object);
oos.close();
fos.close();
}
public static Object readObject(Context context, String key)
throws IOException, ClassNotFoundException {
FileInputStream fis = context.openFileInput(key);
ObjectInputStream ois = new ObjectInputStream(fis);
Object object = ois.readObject();
return object;
}
}
Mistake
01-22 11:29:36.967: E/AndroidRuntime(6733): FATAL EXCEPTION: main
01-22 11:29:36.967: E/AndroidRuntime(6733): java.lang.IllegalArgumentException: no char field 'exponential'
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.EmulatedFields.put(EmulatedFields.java:459)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.EmulatedFieldsForDumping.put(EmulatedFieldsForDumping.java:83)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.text.DecimalFormatSymbols.writeObject(DecimalFormatSymbols.java:591)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invokeNative(Native Method)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invoke(Method.java:507)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1219)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1062)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:1008)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.text.DecimalFormat.writeObject(DecimalFormat.java:1215)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invokeNative(Native Method)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invoke(Method.java:507)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1219)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1205)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:1143)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:413)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1241)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.util.ArrayList.writeObject(ArrayList.java:651)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invokeNative(Native Method)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invoke(Method.java:507)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1219)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1575)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1847)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1689)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1653)
01-22 11:29:36.967: E/AndroidRuntime(6733): at com.app.utils.StorageHelper.writeObject(StorageHelper.java:46)
01-22 11:29:36.967: E/AndroidRuntime(6733): at com.app.home.NewsListView.processData(NewsListView.java:359)
01-22 11:29:36.967: E/AndroidRuntime(6733): at com.app.home.NewsListView.access$4(NewsListView.java:314)
01-22 11:29:36.967: E/AndroidRuntime(6733): at com.app.home.NewsListView$NewsByIDTask.onPostExecute(NewsListView.java:563)
01-22 11:29:36.967: E/AndroidRuntime(6733): at com.app.home.NewsListView$NewsByIDTask.onPostExecute(NewsListView.java:1)
01-22 11:29:36.967: E/AndroidRuntime(6733): at android.os.AsyncTask.finish(AsyncTask.java:417)
01-22 11:29:36.967: E/AndroidRuntime(6733): at android.os.AsyncTask.access$300(AsyncTask.java:127)
01-22 11:29:36.967: E/AndroidRuntime(6733): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
01-22 11:29:36.967: E/AndroidRuntime(6733): at android.os.Handler.dispatchMessage(Handler.java:99)
01-22 11:29:36.967: E/AndroidRuntime(6733): at android.os.Looper.loop(Looper.java:130)
01-22 11:29:36.967: E/AndroidRuntime(6733): at android.app.ActivityThread.main(ActivityThread.java:3701)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invokeNative(Native Method)
01-22 11:29:36.967: E/AndroidRuntime(6733): at java.lang.reflect.Method.invoke(Method.java:507)
01-22 11:29:36.967: E/AndroidRuntime(6733): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteI
source
share