【发布时间】:2016-09-23 01:16:06
【问题描述】:
我正在尝试使用以下内容将对象序列化到文件中:
// fill with some test data
ArrayList<Transaction> transactions = new ArrayList<>();
transactions.add(new Transaction("Internet", "2016-09-20", -28));
transactions.add(new Transaction("Groceries", "2016-09-20", -26));
//serialize transactions
try {
// File f = new File("transactions.ser");
// OutputStream file = new FileOutputStream(f);
// OutputStream buffer = new BufferedOutputStream(file);
// ObjectOutput output = new ObjectOutputStream(buffer);
File f = new File("transactions.ser");
FileOutputStream fos = new FileOutputStream(f);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(transactions);
out.flush();
out.close();
FileInputStream fis = new FileInputStream(f);
ObjectInputStream in = new ObjectInputStream(fis);
Object o = in.readObject();
System.out.println(o);
}
catch(IOException e){
System.out.println("IOException");
}
catch(ClassNotFoundException e) {
System.out.println("ClassNotFoundException");
}
..但是 IOException 被抛出。被注释掉的代码确实可以创建文件,但它是空的,所以我认为这不是权限问题?经过一番阅读,我找到了 ObjectOutputStream 但不会写入文件。我做错了什么?
【问题讨论】:
-
好吧,您目前正在处理异常,只是打印
IOException。打印出异常本身,它会告诉你出了什么问题。请注意,您还应该使用 try-with-resources 来处理关闭... -
使用
e.printStackTrace()代替System.out.println("IOException")。请edit 问题并添加生成的堆栈跟踪,格式正确。当您有异常时,堆栈跟踪是首先要查看的地方 - 不要用无意义的打印来抑制它。