2

シリアル化されたオブジェクトを保持するために使用される Java のファイルを扱っています。このファイルに書き込みを行っているプロセスがタイムアウトしたかどうかを判断するために、ファイルの lastModified() メソッドをチェックし、オブジェクトが書き込まれるたびに更新されることを期待します。Linux と Mac では問題なく動作しますが、Windows では FileOutputStream が閉じられるまでタイムスタンプは更新されません。また、 setLastModified() を使用してタイムスタンプを直接更新しようとしましたが、役に立ちませんでした。Google から収集した情報によると、これは Windows 上のファイルでの既知の動作のようです。

私の質問は、どうすれば Windows でやりたいことを達成できるでしょうか? 何かがいつシリアル化されたかを判断できる必要があります。問題は、シリアル化と監視が異なる JVM にあることです。

タイムスタンプのアプローチは他のすべてのプラットフォームでうまく機能するため、引き続き使用する方法を見つけたいと思いますが、回避策もいただければ幸いです。

ありがとう

4

2 に答える 2

1

Java 7 を使用している場合はjava.nio.file.Files、そのSetLastModifiedTime(Path, FileTime)静的メソッドを使用できます。

ただし、それが File の setLastModified と異なる動作をするかどうかはわかりません。

于 2012-12-20T20:05:32.363 に答える