6

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 and then ENTRY_CREATE.

Karoo
  • 542
  • 6
  • 19

3 Answers3

9

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.

dogbane
  • 266,786
  • 75
  • 396
  • 414
4

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.

Raedwald
  • 46,613
  • 43
  • 151
  • 237
2

I think the jnotify would be useful in your case.

aphex
  • 3,372
  • 2
  • 28
  • 56