我想从一个文件中读取然后将其删除,同时阻止其他进程访问它.如何实现这一目标?
FileLock将无法工作,因为您必须释放锁并关闭通道才能调用File.delete().我担心的是,在释放锁之后,另一个进程可能会锁定它并在删除文件之前开始读取.
我正在使用Java 5并且升级到6目前不是一个选项.
我不知道这是否可行,但一个简单的解决方案是使用操作系统用户和权限来确保只有您的进程可以读取该文件.
另一种方法是将文件重命名为随机生成的字符串,然后锁定,读取,解锁,然后删除重命名的文件.理论上,另一个程序可以猜测文件名,并在文件解锁后但在删除之前读取文件.但在实践中,你可能会没事的.
| 归档时间: |
|
| 查看次数: |
4094 次 |
| 最近记录: |