2015-07-27 3 views

ответ

3
public void afterDate() throws IOException { 
    final String pathToDirectory = "/path/to/directory"; 
    final long afterDate = new Date().getTime(); 
    final List<Path> paths = new ArrayList<>(); 
    final Path directory = Paths.get(pathToDirectory); 
    try (DirectoryStream<Path> directoryStream = Files.newDirectoryStream(directory)) { 
     for (Path path : directoryStream) { 
      final BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class); 
      final long creationTime = attr.creationTime().toMillis(); 
      if (creationTime >= afterDate) { 
       paths.add(path); 
      } 
     } 
    } 
    for (final Path path : paths) { 
     System.out.println(path.getFileName()); 
    } 

} 
+1

Вы смешиваете устаревший API файлов с файловым API NIO.2. Рассмотрите возможность замены File to Path. – Puce

+0

@Puce, true, обновленный ответ на nio – Danielson

+1

Сторона примечания: URI не требуется для локальной файловой системы. Вы можете использовать метод Paths.get (String, String ...). – Puce

1

Если вы действительно хотите следить активно для вновь создаваемых файлов, вы можете использовать WatchService: http://docs.oracle.com/javase/7/docs/api/java/nio/file/WatchService.html

Если вы ищете только для файлов, которые находятся там, вы можете, например, использовать класс Apache Commons FileUtils 'methods, чтобы просмотреть все файлы, измененные/созданные между двумя конкретными датами.

1

Логика будет ниже

Использовать файл класса.

перебрать все файлы в каталоге

Это может быть сделано с помощью file.listFiles() метода.

Метод возвращает все файлы (файлы, а также каталоги) в каталог.

Тогда для каждого файлового объекта, получить временную метку с помощью file.lastModified(), а затем проверить, если он находится между метками времени, которые Вы определили

startTimestamp < file.lastModified() < endTimestamp

Смежные вопросы