static void onNewFileInDir(final File dir, final VF1 onNewFile) { onNewFileInDir(dir, 1.0, onNewFile); } static void onNewFileInDir(final File dir, double interval, final VF1 onNewFile) { doEvery(interval, new Runnable { Set files = asHashSet(listFiles(dir)); public void run { File[] newFiles = listFiles(dir); for (File f : newFiles) if (!files.contains(f)) pcallF(onNewFile, f); files = asHashSet(newFiles); } }); }