尝试将对象写入数组,然后保存到output.data中,然后再次读取对象。
写入:
代码编译没有问题,文件本身也保存得很好。但是当我尝试读取文件时,什么也没有发生,NetBeans会显示以下信息:“在线程“AWT-EventQueue-0”中发生异常,java.lang.ClassCastException:[Lnetbeansswingexample.Assessment; 无法转换为java.util.ArrayList”。似乎引起问题的代码行是:
任何帮助都将不胜感激,谢谢。如果答案很显然,请见谅,我对编程还很陌生。
写入:
private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {
File outFile;
FileOutputStream fStream;
ObjectOutputStream oStream;
try {
outFile = new File("output.data");
fStream = new FileOutputStream(outFile);
oStream = new ObjectOutputStream(fStream);
oStream.writeObject(arr);
JOptionPane.showMessageDialog(null, "File Written Successfully");
oStream.close();
} catch (IOException e) {
System.out.println("Error: " + e);
}
}
阅读:
private void readBtnActionPerformed(java.awt.event.ActionEvent evt) {
File inFile;
FileInputStream fStream;
ObjectInputStream oStream;
try {
inFile = new File("output.data");
fStream = new FileInputStream(inFile);
oStream = new ObjectInputStream(fStream);
//create an array of assessments
ArrayList <Assessment> xList;
xList = (ArrayList<Assessment>)oStream.readObject();
for (Assessment x:xList) {
JOptionPane.showMessageDialog(null, "Name: " + x.getName() + "Type: " + x.getType() + "Weighting: " + x.getWeighting());
}
oStream.close();
} catch (IOException e) {
System.out.println("Error: " + e);
} catch (ClassNotFoundException ex) {
System.out.println("Error: " + ex);
}
}
代码编译没有问题,文件本身也保存得很好。但是当我尝试读取文件时,什么也没有发生,NetBeans会显示以下信息:“在线程“AWT-EventQueue-0”中发生异常,java.lang.ClassCastException:[Lnetbeansswingexample.Assessment; 无法转换为java.util.ArrayList”。似乎引起问题的代码行是:
xList = (ArrayList<Assessment>)oStream.readObject();
任何帮助都将不胜感激,谢谢。如果答案很显然,请见谅,我对编程还很陌生。
ArrayList
对象。 - Tagir ValeevsaveBtnActionPerformed
方法中的arr
是什么类型? - Masudul