Is there a way to detect file renaming using Java? (NIO\'s WatchService API or any other) From what I\'ve seen when renaming a file two separate events occur - ENTRY_DELETE
Take a look at jpathwatch. In addition to the standard watch event kinds specified in Java 7 (ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY
) it also has additional events called ENTRY_RENAME_FROM
and ENTRY_RENAME_TO
which will fire when a file is renamed. Note that this depends on whether the underlying operating system supports file renaming events or not.
I think the jnotify would be useful in your case.
Detecting renaming of files can not be done portably. Because, surprising as it may seem, the idea that a file HAS-A name is not portable. Most Unix file systems allow a file to have any number of ASSOCIATED names (including zero names). In the Unix (POSIX) world, renaming means adding a new name and then removing the original name.