我希望在特定文件上启动threo读取时对文件进行锁定,以便其他应用程序无法读取已经锁定的文件并希望在线程终止时释放锁定文件。
答案 0 :(得分:1)
您可以通过FileLock获取FileChannel。获取FileChannel:
在此版本中,可以通过调用该对象的getChannel方法从现有的FileInputStream,FileOutputStream或RandomAccessFile对象获取文件通道,该方法返回连接到的文件通道相同的基础文件。
但是,Java无法控制操作系统提供的文件锁定类型,因此API的建议是使用锁定,就像它是一个建议文件锁定一样。
锁是否实际阻止其他程序访问锁定区域的内容是系统相关的,因此未指定。某些系统的本机文件锁定功能仅仅是建议性的,这意味着程序必须协作地观察已知的锁定协议以保证数据的完整性。在其他系统上,本机文件锁是必需的,这意味着如果一个程序锁定文件的某个区域,则实际上阻止其他程序以违反该锁的方式访问该区域。在其他系统上,可以基于每个文件配置本机文件锁是建议性的还是必需的。为了确保跨平台的一致和正确的行为,强烈建议使用此API提供的锁,就像它们是咨询锁一样。
答案 1 :(得分:0)
读取并保存文件流后,操作系统会阻止其他进程访问该文件,除非读取该文件。
在Windows中,我知道有些应用程序允许您搜索锁定文件的进程并将其终止。 Unlocker 是我最喜欢的一个。