Java Hashmap,其中Key是文件,Value是模型

时间:2012-07-25 07:26:16

标签: java hashmap java-io

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

  1. 我打开文件
  2. 我做了一些改变
  3. 我保存该文件(文件 - >保存)
  4. 我退出文件
  5. 然后我打开同一个文件
  6. 但是,它没有打开!
  7. 我的问题是,如果我更改文件(通过保存)我是否需要从Hashmap中删除该键值对并添加新的键值对?这样的值是相同的但密钥是否更新?

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

    此致 NC5

5 个答案:

答案 0 :(得分:3)

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

锁定是由一些仍然打开的流引起的。我敢打赌,在保存到文件后你没有关闭你的输出流。

答案 1 :(得分:1)

是。如果您从逻辑上思考,您的密钥将被更改。一旦它被更改,您将无法使用它找到您的数据。您应该在地图中插入(新的键,值)对。

答案 2 :(得分:1)

始终 close() 打开file其他文件将不会更新。并且它也将更好地关闭 Connection and Channel streams

答案 3 :(得分:1)

确保您已关闭文件流(最上面一个)。即如果您已经打开了多个流,那么请确保关闭最顶层的流。否则,文件将被操作系统锁定。

答案 4 :(得分:1)

我建议您将文件Name作为Key而不是File Object,并通过其他逻辑处理文件编辑/更新内容。 作为键的文件对象没有多大意义