【发布时间】:2020-10-18 17:08:37
【问题描述】:
我想将HashMap 的所有元素保存在一个文件中。为此,我在一些谷歌搜索的帮助下编写了以下代码:
public void saveCalendars() {
try {FileOutputStream fos = new FileOutputStream(CALENDARPATH_STRING);
ObjectOutputStream oos = new ObjectOutputStream(fos);
for(Calendar elementCalendar : calendarRegister.values()) {
oos.writeObject(elementCalendar);
}
oos.close();
fos.close();
} catch (FileNotFoundException e) {
System.out.println("File not found");
try {FileOutputStream fos = new FileOutputStream(new File(CALENDARPATH_STRING));
ObjectOutputStream oos = new ObjectOutputStream(fos);
for(Calendar elementCalendar : calendarRegister.values()) {
oos.writeObject(elementCalendar);
}
oos.close();
fos.close();
} catch (IOException ex) {
System.out.println("Creating: Error initializing stream");
}
} catch (IOException e) {
System.out.println("Save: Error initializing stream");
}
}
final static String CALENDARPATH_STRING = "C:\\Windows\\calendars.dat";。
我认为我可以简单地使用相同的代码,但如果尚未创建文件,则使用 FileOutputStream fos = new FileOutputStream(new File(CALENDARPATH_STRING));。
不幸的是,它不起作用。这是第一次做这么省钱的东西,所以也许你能帮帮我。
【问题讨论】:
-
您能否澄清一下,什么“不起作用”?你有例外吗?还是没有创建文件?
-
部分问题是您的代码未显示已给出的错误。这些 IOExceptions 可能包含一条错误消息,说明 IO 失败的原因。打印消息!您可以使用 ex.getMessage() 从异常中获取字符串。
-
@IvanBabanin 我得到“找不到文件”和 IOException
-
@user13784117 谢谢!它说我无权访问.. 这就是问题所在!但我已经尝试了其他几个位置。到处都是一样的..
-
您不能在 C:\Windows 中创建文件 - 该目录受到特别保护,否则会出现安全漏洞。我建议您首先尝试在您的主目录中创建一个文件,可能是 C:\Users\
标签: java hashmap save try-catch fileoutputstream