java文件。mkdirs()创建目录而不是文件
我正在尝试序列化以下类:
public class Library extends ArrayList<Book> implements Serializable{
public Library(){
check();
}
使用该类的以下方法:
void save() throws IOException {
String path = System.getProperty("user.home");
File f = new File(path + "\\Documents\\CardCat\\library.ser");
ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream (f));
oos.writeObject(this);
oos.close();
}
但是,程序不是创建一个名为library.ser
的文件,而是创建一个名为library.ser
的目录,其中没有任何内容。为什么会这样
如果有帮助,save()方法最初会从此方法(属于同一类)调用:
void checkFile() {
String path = System.getProperty("user.home");
File f = new File(path + "\\Documents\\CardCat\\library.ser");
try {
if (f.exists()){
load(f);
}
else if (!f.exists()){
f.mkdirs();
save();
}
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(Library.class.getName()).log(Level.SEVERE, null, ex);
}
}
# 1 楼答案
这就是它应该做的。阅读Javadoc。没有关于创建文件的内容
这一行创建了目录。应该是
# 2 楼答案
我很确定对
f.mkdirs()
的调用是你的问题。如果文件不存在(这似乎是您的情况),那么f.mkdirs()
调用将为您提供一个名为“library.ser”的目录,而不是一个文件,这就是为什么“save()”调用无法工作的原因-您无法将对象序列化到目录