#android #file #serialization
#Android #файл #сериализация
Вопрос:
Я хочу сохранить список массивов объектов в файле, чтобы получить к ним доступ после повторного открытия приложения.
public class SmsMessage implements Serializable {
public static enum MessageType {
Sent,
Received;
};
private String body;
private Date date;
private MessageType type;
public SmsMessage(String _body, Date _date, MessageType _type) {
body = _body;
date = _date;
type = _type;
}
}
Вот и весь класс. Я сохраняю его следующим образом:
FileOutputStream fout = null;
ObjectOutputStream out = null;
try {
fout = context.getApplicationContext()
.openFileOutput(FILENAME, Context.MODE_PRIVATE);
out = new ObjectOutputStream(fout);
out.writeObject(list);
out.close();
} catch (IOException ioe) {
System.out.println("Error in save method");
} finally {
out.close();
fout.close();
}
и прочитайте это так:
ObjectInputStream in = null;
FileInputStream fis = null;
try {
fis = context.getApplicationContext().openFileInput(FILENAME);
in = new ObjectInputStream(fis);
ArrayList<SmsMessage> list = null;
list = (ArrayList<SmsMessage>)in.readObject();
} catch (Exception ex) {
System.out.println("Error in get method");
} finally {
in.close();
fis.close();
}
Этот код не работает — я имею в виду, когда я сохраняю полный список массивов и завершаю работу приложения, он ничего не возвращает, когда я пытаюсь прочитать его снова при открытии приложения. Что здесь не так?
Ответ №1:
Инициализируйте следующим образом:
fout=new FileOutputStream(FILENAME));
после завершения.writeObject(список); добавьте эту строку
out.flush();
аналогично инициализировать
fis = new FileInputStream((FILENAME));
Надеюсь, это сработает …. вы получаете какое-либо сообщение об ошибке в logcat??