readObject的问题只返回一个数组值

时间:2015-04-14 04:42:54

标签: java

我参加了Java课程,其任务是编写一个可以从文件中编写和检索事件的日历程序。

我的问题是我只获得了写入数组的第一个值。从" input.readObject"

返回

这是我的getFile方法,调用查看文件。

static String[] Entry = new String [35];

public static void getFile(Object month, String year) throws IOException
{
    ObjectInputStream input = new ObjectInputStream(new FileInputStream(month+year+".txt"));
    try
    {
        String[] LoadedEntry = (String[])(input.readObject());
        Entry = (String[]) LoadedEntry;
    }
    catch (IOException e) 
    {
        // TODO Auto-generated catch block
        //e.printStackTrace();
        System.out.println("File not found, creating new file...");
    } 
    catch (ClassNotFoundException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    finally
    {
        input.close();
    }
}

调用它的方法,并在getFile方法执行后写入所需的代码。

    public static void saveEvent(String month, int day, String year, String calendarEvent)
{
    String[] EntryF = new String[35];
    String[] Sample = {"1", "2", "3", "4", "5"};
    try
    {
        getFile(month, year);
        System.out.println("Past getFile");
        EntryF = Entry;
        //EntryF = Sample;
        EntryF[day] = calendarEvent;

        ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(month + year+".txt", true));
        output.writeObject(EntryF);
        output.reset();
        output.close();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }

}

整天都在绞尽脑汁,无法让这件事工作......有谁看到我哪里出错了?

我可以验证对象是否正在保存并传递到saveEvent方法,因为写入的文本文件正在更改,但它只是没有正确读取文件的完整内容..

谢谢,

安迪

1 个答案:

答案 0 :(得分:0)

您需要一个循环来读取其余的流。到目前为止,您只是阅读流的第一部分,因此以下内容必须处于循环中:

  

String [] loadedEntry =(String [])(input.readObject());

您还需要确定用于结束循环的信号。 对于例如当到达流的末尾时,使用input.read()将导致-1。 您可以使用以下内容读取整个文件:

try {
  while (Terminating_Condition) {   
    String[] loadedEntry = (String[]) (input.readObject());
  }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

希望有所帮助。