2015-07-29 4 views
1

Я пытаюсь сохранить список объектов в файл, но всякий раз, когда я пытаюсь читать из файла, он всегда терпит неудачу. Может кто-нибудь сказать мне, что я делаю неправильноНевозможно написать/прочитать файл со списком объектов

Дать ему

public void writeToFile(List<EventsClass> list) 
{ 
    String filename = "events.srl"; 
    ObjectOutput out = null; 

    try 
    { 
     out = new ObjectOutputStream(new FileOutputStream(new File(getFilesDir(),"")+File.separator+filename)); 
     out.writeObject(list); 
     out.close(); 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
} 

Я проверил и список аргументов всегда содержит список объектов

Чтение из него

public List<EventsClass> readFromFile() 
{ 
    ObjectInputStream input; 
    String filename = "events.srl"; 

    try 
    { 
     input = new ObjectInputStream(new FileInputStream(new File(new File(getFilesDir(),"")+File.separator+filename))); 
     List<EventsClass> list = (List<EventsClass>) input.readObject(); 
     input.close(); 
     return list; 
    } 
    catch (IOException | ClassNotFoundException e) 
    { 
     e.printStackTrace(); 
     return null; 
    } 
} 

он всегда не читает файл и возвращает null

Вот EventsClass

public class EventsClass 
{ 
    private String eventName; 
    private String eventClass; 
    private String eventDate; 
    private int eventMonth; 
    private int eventDay; 

    public EventsClass(String eventClass, String eventName, String eventDate, int eventMonth, int eventDay) 
    { 
     this.eventClass = eventClass; 
     this.eventName = eventName; 
     this.eventDate = eventDate; 
     this.eventMonth = eventMonth; 
     this.eventDay = eventDay; 
    } 

    public void putEventData(String mClass, String name, String date, int month, int day) 
    { 
     this.eventClass = mClass; 
     this.eventName = name; 
     this.eventDate = date; 
     this.eventMonth = month; 
     this.eventDay = day; 
    } 

    public String getEventClass() 
    { 
     return eventClass; 
    } 

    public String getEventName() 
    { 
     return eventName; 
    } 

    public String getEventDate() 
    { 
     return eventDate; 
    } 

    public int getEventMonth() 
    { 
     return eventMonth; 
    } 

    public int getEventDay() 
    { 
     return eventDay; 
    } 
} 
+0

какой след? – AedonEtLIRA

+0

обновил его, чтобы показать вам EventsClass. Я обычно использую sharedpreferences, и это мой первый раз реализовал систему ввода/вывода файлов в java – maxib7

+0

У вас нет stacktrace? –

ответ

2

Я., EventsClass нужно сериализовать, чтобы записать на хранение. Если вы его реализуете java.io.Serializable, все должно хорошо работать для вас. Here is a decent tutorial вы понимаете больше того, что происходит с сериализацией Java.

+0

Wow thanks! Не ожидал, что это будет так просто – maxib7

Смежные вопросы