Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法写入/读取包含对象列表的文件_Java_Android_Object_File Io - Fatal编程技术网

Java 无法写入/读取包含对象列表的文件

Java 无法写入/读取包含对象列表的文件,java,android,object,file-io,Java,Android,Object,File Io,我试图将对象列表保存到文件中,但每当我尝试从文件中读取时,总是失败。有人能告诉我我做错了什么吗 向它写入内容 public void writeToFile(List<EventsClass> list) { String filename = "events.srl"; ObjectOutput out = null; try { out = new ObjectOutputStream(new FileOutputStream(n

我试图将对象列表保存到文件中,但每当我尝试从文件中读取时,总是失败。有人能告诉我我做错了什么吗

向它写入内容

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;
    }
}

是的,EventsClass需要可序列化才能写入存储。如果您让它实现了
java.io.Serializable
,那么所有这些都应该可以很好地为您服务。您对java序列化有了更多的了解。

对其进行了更新,向您展示了EventsClass。我通常使用SharedReferences,这是我第一次用Java实现文件I/o系统。你没有stacktrace?不需要<代码>事件类不可序列化;对象未被写入,因此无法读取
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;
    }
}