我参加了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方法,因为写入的文本文件正在更改,但它只是没有正确读取文件的完整内容..
谢谢,
安迪
答案 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();
}
希望有所帮助。