0

私は、Java IO ライブラリの File オブジェクトとしてキーを持つハッシュマップと、ハッシュマップの値として DrawingModel と呼ばれるカスタム モデル オブジェクトを持つプロジェクトに取り組んでいます。モデルを変更するときは、ファイルを保存する必要があります。次の一連のイベントを通過すると:

  1. ファイルを開く
  2. 私はいくつかの変更を行います
  3. そのファイルを保存します (ファイル -> 保存)
  4. ファイルを終了します
  5. 次に、同じファイルを開きます
  6. しかし、開かない!

私の質問は、ファイルを (保存して) 変更した場合、そのキーと値のペアをハッシュマップから削除し、新しいキーと値のペアを追加する必要があるかどうかです。値は同じですが、キーは更新されますか?

お時間をいただき、ありがとうございました。

よろしくお願いします。

4

5 に答える 5

3

File オブジェクトは、実際のファイルのパスへのラッパーにすぎません。ファイルをロックすることはありません。

ロックは、まだ開いているストリームによって発生します。ファイルに保存した後、出力ストリームを閉じていないに違いありません。

于 2012-07-25T07:29:47.127 に答える
1

はい。論理的に考えると、キーが変更されます。一度変更すると、それを使用してデータを見つけることができなくなります。マップに (新しいキー、値) ペアを挿入する必要があります。

于 2012-07-25T07:31:28.910 に答える
1

開いたファイルclose()常にfileです。それ以外の場合、ファイルは更新されません。また、閉じた方が良いでしょうConnection and Channel streams

于 2012-07-25T07:31:36.077 に答える
1

ファイル ストリーム (一番上のもの) を閉じていることを確認してください。つまり、複数のストリームを重ねて開いている場合は、一番上のストリームが閉じていることを確認してください。そうしないと、ファイルはオペレーティング システムによってロックされます。

于 2012-07-25T07:31:56.660 に答える
1

ファイルオブジェクトの代わりにファイル名をキーとして配置し、ファイルの編集/更新を別のロジックで処理することをお勧めします。キーとしてのファイル オブジェクトはあまり意味がありません

于 2012-07-25T07:33:44.797 に答える