Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java detect changes in filesystem

I have a folder in which continuously new files are being dumped.In Java,what is the best way to detect changes in file-system (ie. a specified folder in which the files are being dumped) and add the newly arrived files to a queue data structure so that i can sequentially process each incoming file.

I'm aware of listFiles() function in the File class but using this I can only get files that are available at an instant of time. Of course I can continuously poll the folder and get the list of files in it using a thread.But is this the best way or is there a better way to accomplish this.

like image 836
Emil Avatar asked Aug 02 '10 12:08

Emil


2 Answers

Continuously polling is the way to do it in Java as of now - though don't poll too often, it can be quite a heavy operation if the directory contains lots of entries.

JDK 7 will have a specific API for doing just this java.nio.file.WatchFile

like image 167
nos Avatar answered Oct 21 '22 06:10

nos


There is unfortunately no standard way to do this until JDK7 comes out. But there are some libraries available on the internet which use the native functions of different operating systems to do this.

The libraries which I have looked at are jPoller and jNotify But in the end I ended simply polling the directory which was interesting for me when I had to do that.

like image 23
Jaka Avatar answered Oct 21 '22 06:10

Jaka