gpt4 book ai didi

Java I/O : Ensure a file is not locked by another process before any r/w operation

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:25:55 25 4
gpt4 key购买 nike

我在基于 Java 7 WatchService API 跟踪目录中文件内容的应用程序中遇到了一个反复出现的问题。当底层文件系统触发文件修改事件时,我想立即计算其 SHA-256。

但经常会发生另一个进程打开文件(即 Word),从而保留独占锁并阻止我的应用程序进行任何读/写操作。如果针对打开的文件创建了任何流/ channel ,则会抛出 FileNotFoundException 或 nio API 的 FileSystemException 以及如下消息:

The process cannot access the file because it is being used by another process

当文件在 fs 上实际上不存在时,我无法提供一种解决方案来检测此类情况而不屏蔽“真正的”FileNotFoundException。

我想出了通过 File.exists 检查是否存在的想法,然后如果在我打开流时抛出 FileNotFoundException,我将能够推断出文件已锁定。我愿意接受任何对此的意见!

谢谢!

最佳答案

您是否尝试过自己锁定文件?我假设您只有在未锁定且存在的情况下才能获取锁。

http://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html#tryLock%28%29

关于Java I/O : Ensure a file is not locked by another process before any r/w operation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8802467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com