Java Hashmap,其中Key是一个File,Value是一个Model



我正在做一个项目,在这个项目中,我有一个hashmap,其中键是Java IO库中的File对象,还有一个自定义模型对象,称为DrawingModel,作为hashmap中的值。当我更改模型时,我需要保存文件。当我经历以下事件序列时:

  1. 我打开一个文件
  2. 我做了一些改变
  3. 我保存该文件(文件->保存)
  4. I退出文件
  5. 然后我打开同一个文件
  6. 但是,它没有打开

我的问题是,如果我更改文件(通过保存),是否需要从Hashmap中删除该键值对并添加新的键值对?这样值是相同的,但密钥是更新的?

非常感谢您的时间和帮助!

真诚地,nc5

File对象只不过是实际文件路径的包装器。它不会以任何方式锁定您的文件。

锁定是由某些仍然打开的流引起的。我敢打赌,在保存到文件后,您不会关闭输出流。

我建议您将文件名作为Key,而不是file Object,并通过另一个逻辑处理文件编辑/更新的内容将文件对象作为关键字没有多大意义

是。如果你从逻辑上思考,你的钥匙就变了。一旦它被更改,您将无法再使用它定位您的数据。您应该在映射中插入一个(新键,值)对。

始终close()打开的file,否则文件将不会更新最好关闭Connection and Channel streams

确保已关闭文件流(最上面的一个)。I.e如果你打开了几个流,然后确保最上面的流是关闭的。否则,该文件将被操作系统锁定。

最新更新