Читать ArrayList из внутреннего хранилища

У меня есть приложение для Android, и я хотел бы прочитать и написатьArrayList на внутреннее хранилище.

Письменная часть работает (я верю, убежищеТ проверял это еще :-)):

ArrayList aList;

    public void saveToInternalStorage() {
    try {
        FileOutputStream fos = ctx.openFileOutput(STORAGE_FILENAME, Context.MODE_PRIVATE);
        fos.write(aList.toString().getBytes());
        fos.close();
    }
    catch (Exception e) {
        Log.e("InternalStorage", e.getMessage());
    }
}

Но сейчас я хочу прочитать весь ArrayList из хранилища и вернуть его в виде ArrayList примерно так:

public ArrayList readFromInternalStorage() {
        ArrayList toReturn;
        FileInputStream fis;
        try {
            fis = ctx.openFileInput(STORAGE_FILENAME);

            //read in the ArrayList
            toReturn = whatever is read in...

            fis.close();
        } catch (FileNotFoundException e) {
            Log.e("InternalStorage", e.getMessage());
        } catch (IOException e) {
            Log.e("InternalStorage", e.getMessage()); 
        }
        return toReturn
}

Я никогда не читал в файле с Android раньше, поэтому я нене знаю, возможно ли это вообще. Но есть ли способ, которым я могу читать в моем обычае?ArrayList

Ответы на вопрос(1)

Решение Вопроса

Ваш MyClass должен быть Serializable, и все члены внутри MyClass должны быть сериализуемыми

 public void saveToInternalStorage() {
        try {
            FileOutputStream fos = ctx.openFileOutput(STORAGE_FILENAME, Context.MODE_PRIVATE);
            ObjectOutputStream of = new ObjectOutputStream(fos);
            of.writeObject(aList);
            of.flush();
            of.close();
            fos.close();
        }
        catch (Exception e) {
            Log.e("InternalStorage", e.getMessage());
        }
}

для десериализации объекта:

public ArrayList<myclass> readFromInternalStorage() {
    ArrayList<myclass> toReturn;
    FileInputStream fis;
    try {
        fis = ctx.openFileInput(STORAGE_FILENAME);
        ObjectInputStream oi = new ObjectInputStream(fis);
        toReturn = oi.readObject();
        oi.close();
    } catch (FileNotFoundException e) {
        Log.e("InternalStorage", e.getMessage());
    } catch (IOException e) {
        Log.e("InternalStorage", e.getMessage()); 
    }
    return toReturn
} 
</myclass></myclass>
 Hans Vn11 июн. 2013 г., 18:16
Кажется законным, но на oi.readObject () Eclipse дает мне "не может преобразовать из объекта в ArrayList <MyClass>» Несоответствие типов ... Я думаю, приведение к ArrayList <MyClass> победил'Тоже работает в этом случае?
 Hans Vn11 июн. 2013 г., 19:45
Это работает :) Теперь я получаю предупреждение: Безопасность типов: непроверенное приведение из Object в ArrayList <MyClass>, А также член MyClass являетсяMarkerOption, это, кажется, не сериализуемо ... Могу ли я добиться того же с Parcelable вместо Serializable?
 Blackbelt11 июн. 2013 г., 18:37
Вы можете кастовать безопасно

Ваш ответ на вопрос