Search code examples
javajnotify

JNotify and File Reader conflicting each other


I implemented JNotify to determine when a new file arrives in a particular directory, and, when a file arrives, to send the filename over to another function, as follows:

    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);
                    }
            }
    }

The function mp.processMessage tries to open the file, but I keep getting an error that the file is in use by another process. However, as the file has just been created, the only other process which might be using it is JNotify.

I put a couple of print statements, and it appears that the function mp.processMessage is being called before the listener's print function. Does anyone have a suggestion for how I might resolve this, beyond putting the entire message processing inside the listener class?


Solution

  • @Eile What I think is As soon as one process is copying the file, you are trying to read it, 100 ms delay will complete the copy first n then you can read the file easily.