0

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

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

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

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

真诚的,nc5

4

5 回答 5

3

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

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

于 2012-07-25T07:29:47.127 回答
1

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

于 2012-07-25T07:31:28.910 回答
1

始终 是您打开close()的那个,否则文件将不会被更新。而且最好关闭fileConnection and Channel streams

于 2012-07-25T07:31:36.077 回答
1

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

于 2012-07-25T07:31:56.660 回答
1

我建议你把文件名作为键而不是文件对象,并通过另一个逻辑处理文件编辑/更新的东西。将文件对象作为键没有多大意义

于 2012-07-25T07:33:44.797 回答