我正在做一个项目,在这个项目中,我有一个hashmap,其中键是Java IO库中的File对象,还有一个自定义模型对象,称为DrawingModel,作为hashmap中的值。当我更改模型时,我需要保存文件。当我经历以下事件序列时:
- 我打开一个文件
- 我做了一些改变
- 我保存该文件(文件->保存)
- I退出文件
- 然后我打开同一个文件
- 但是,它没有打开
我的问题是,如果我更改文件(通过保存),是否需要从Hashmap中删除该键值对并添加新的键值对?这样值是相同的,但密钥是更新的?
非常感谢您的时间和帮助!
真诚地,nc5
锁定是由某些仍然打开的流引起的。我敢打赌,在保存到文件后,您不会关闭输出流。
我建议您将文件名作为Key,而不是file Object,并通过另一个逻辑处理文件编辑/更新的内容将文件对象作为关键字没有多大意义。
是。如果你从逻辑上思考,你的钥匙就变了。一旦它被更改,您将无法再使用它定位您的数据。您应该在映射中插入一个(新键,值)对。
始终close()
您打开的file
,否则文件将不会更新最好关闭Connection and Channel streams
确保已关闭文件流(最上面的一个)。I.e如果你打开了几个流,然后确保最上面的流是关闭的。否则,该文件将被操作系统锁定。