【发布时间】:2013-08-30 13:05:51
【问题描述】:
我正在开发一个大型 GUI 程序,其中有很多项目数据需要在命令上存储locally。
目前,我将所有全局数据结构保存在一个保存类(项目)中,然后将它们序列化到本地硬盘文件:
public void saveChanges() {
ArrayList<Student> studentList = new ArrayList<>();
ArrayList<String> coursesList = new ArrayList<>();
ArrayList<Requirement> reqList = new ArrayList<>();
ArrayList<Risk> riskList = new ArrayList<>();
for (int x = 0; x < dlm.getSize(); x++) {
studentList.add(dlm.elementAt(x));
}
for (int x = 0; x < dlm2.getSize(); x++) {
coursesList.add(dlm2.elementAt(x));
}
for (int x = 0; x < dlm3.getSize(); x++) {
reqList.add(dlm3.elementAt(x));
}
for (int x = 0; x < riskTable.getRowCount(); x++) {
riskList.add((Risk) riskMap.get(dtm1.getValueAt(x, 0)));
}
project.setStudentAL(studentList);
project.setCoursesAL(coursesList);
project.setReqAL(reqList);
project.setRiskAL(riskList);
project.setLastUpdated(new Date().toString());
}
现在我将其序列化为本地文件:
public void saveProject(boolean defaultPath, String path) {
saveChanges();
FileOutputStream outFile;
try {
if (defaultPath) {
outFile = new FileOutputStream(directory + project.getProjectName() + ".proj");
} else {
outFile = new FileOutputStream(path + ".proj");
}
ObjectOutputStream outObject = new ObjectOutputStream(outFile);
outObject.writeObject(project);
outObject.close();
} catch (IOException e) {
System.out.println("Failed to save project");
e.printStackTrace();
}
}
我的问题是: 是否有默认值;或更好的方法将文件保存在本地硬盘上?我不想使用 XML 或任何 DB。
- 提前致谢
【问题讨论】:
-
为了阻止与您的需求不符的建议,详细说明您不想使用 XML 或数据库的原因可能会很有用。这是个人偏好吗,在这种情况下,一个好的论据可以说服你吗?还是出于某种原因项目的硬性要求?
标签: java swing user-interface arraylist save