我试图序列化一个对象具有以下到文件:的ObjectOutputStream没有写入文件
// 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");
}
..however IOException异常被抛出。被注释掉的代码确实可以创建文件,但它是空的,所以我认为这不是权限问题?经过一些阅读后,我发现ObjectOutputStream,但不会写入文件。我究竟做错了什么?
那么你正在吞咽异常,只是打印'IOException'。打印出异常本身,它会告诉你什么是错的。请注意,您还应该使用try-with-resources来处理关闭...... –
而不是'System.out.println(“IOException”)''使用'e.printStackTrace()'。请[编辑]问题并添加正确格式化的结果堆栈跟踪。堆栈跟踪是在发生异常时首先要查看的地方 - 不要用无意义的打印压缩它。 – RealSkeptic