【发布时间】:2018-06-21 02:53:52
【问题描述】:
我不太确定我还能如何陈述标题,但这里是:
我有多个课程:
DamageType
Proficiencies
Race
这些都需要保存到 .ser 文件中。我想我可以通过为所有 3 个创建一个单一的方法来节省时间,所以我需要一个解析所有这些对象的保存方法。我让这些类实现了Serializable,这样我就可以创建以下方法:
createFile(Serializable object){
File file = new File("./src/"+object+".ser");
file.createNewFile();
fout = new FileOutputStream(file);
oos = new ObjectOutputStream(fout);
oos.writeObject(object);
}
但是,当从文件中检索对象时,它以Serializable 接口的形式返回,我无法将该接口转换为类。
public static ArrayList<Serializable> readFolder(File folder, ArrayList<String> exceptions) {
ArrayList<Serializable> objects = new ArrayList<Serializable>();
for (File fileEntry : folder.listFiles()) {
if (!(exceptions.contains(fileEntry.getName()))) {
if (fileEntry.isDirectory()) {
readFolder(fileEntry, exceptions);
} else {
objects.add(fileEntry);
}
}
}
return objects;
}
我还能怎么做?我是否必须硬着头皮为每个人创建一个createFile 方法?
【问题讨论】:
-
我没有看到您在
createFile方法中从文件中检索对象的位置。 -
@tsolakp 我会用检索代码更新帖子
-
你知道每个反序列化类的预期类型是什么吗?
-
我不确定你的意思,但是所有的类都在不同的文件夹中。因此,ArrayList
应该只包含一个类。 -
因此,在特定文件夹下,您将只有
DamageType类型的对象的序列化文件,而在不同文件夹下只有Proficiencies的序列化文件?
标签: java save serializable