java - JNotify 和 File Reader 相互冲突

标签 java jnotify

我实现了 JNotify 以确定新文件何时到达特定目录,并且在文件到达时将文件名发送到另一个函数,如下所示:

    public class FileDetector {
            MessageProcessor mp;
            class Listener implements JNotifyListener {
                    public void fileCreated(int wd, String rootPath, String name) {
                            print("created " + rootPath + " : " + name);
                            mp.processMessage(rootPath + "\\" + name);
                    }
            }
    }

函数 mp.processMessage 尝试打开该文件,但我不断收到错误消息,提示该文件正在被另一个进程使用。但是,由于该文件刚刚创建,可能正在使用它的唯一其他进程是 JNotify。

我放置了几个打印语句,看起来函数 mp.processMessage 在监听器的打印函数之前被调用。除了将整个消息处理放在监听器类中之外,还有人建议我如何解决这个问题吗?

最佳答案

@Eile 我的想法是,一旦一个进程正在复制文件,您正在尝试读取它,100 毫秒的延迟将首先完成复制 n 然后您可以轻松读取文件。

关于java - JNotify 和 File Reader 相互冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6619541/

相关文章:

java - JNotify(java 文件观察器)行为不一致

java - 使用java识别系统中的临时文件

Java RMI 通过引用传递

java - 从测试用例调用 Controller 时,使用自动连线组件测试 Controller 为空

java - 升级到 jdk1.6 时 MockEJB 失败

java - 设置 JNotify

java - 如何在Linux(Ubuntu操作系统)中配置Jnotify?

java - 公共(public)前缀的正则表达式模式

java - Java中的4字节unicode字符

java - 线程中出现异常 "AWT-EventQueue-0"java.lang.UnsatisfiedLinkError : no jnotify in java. library.path