У меня есть программа, которая должна читать файлы. Мне нужно проверять каждые 10 секунд, если есть новые файлы.Проверить наличие новых файлов в цикле - java
Чтобы сделать это, я сделал это:
ArrayList<File>oldFiles = new ArrayList<File>();
ArrayList<File>files=new ArrayList<File>();
while(isFinished != true){
files=listFilesForFolder(folder);
if(oldFiles.size() != files.size()){
System.out.println("Here is when a new file(s) is(are) in the folder");
}
Thread.sleep(10000);
}
В принципе, listFilesForFolder получает назначение папки и проверить файлы там.
Моя проблема: Моя программа выполняет каждый цикл моей функции чтения для каждого файла. Я хочу сделать свою функцию чтения ТОЛЬКО на новые файлы.
Как я могу сделать что-то вроде:
новых файлов - старые файлов = моих файлов, которые я хочу прочитать.
Не ответ, но обратите внимание, что проверка является неправильным. Если файл был удален и новый файл был создан в течение 10 секунд, вы не обнаружите новый файл, поскольку вы проверяете размер списков, а не контент. – giorashc
Не могли бы вы переместить обработанные файлы в отдельную папку? Чем фактическая папка будет либо пустой (ничего не делать), либо содержать новые файлы. – slartidan
Отключить тему, но посмотрите эту идиому на поток sleep: 'TimeUnit.SECONDS.sleep (10)' http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html – djeikyb