Java7 WatchService - Access Denied error при попытке удалить рекурсивно просматриваемые вложенные каталоги (Windows only)

Я следил за Наблюдение за изменениями в каталоге Java7 nio2 tutorial, чтобы рекурсивно отслеживать все содержимое каталога с помощью примера кода WatchDir.java .

Хотя это хорошо работает в Linux и Mac, в Windows (проверено в Vista и 7) попытка удалить вложенные просматриваемые папки с помощью проводника Windows завершается ошибкой с сообщением типа «Доступ запрещен: требуется разрешение на выполнение. это действие «, когда файл существует в одном из вложенных каталогов.

Например, если я смотрю дерево вложенных папок в Windows:

-- Folder A
   -- Folder A1
      -- File F

и пытаюсь удалить папку A, я получаю указанную ошибку« Доступ запрещен ». Однако он отлично работает, если я:

  • Удаляю папку A1, затем удаляю папку A
  • Удаляю файл F, затем удаляю папку A

Есть ли способ использовать nio2 WatchService для рекурсивного просмотра вложенного каталога, но не действовать как будто программа обращается к вложенным файлам?

15
задан FR. 6 June 2011 в 17:01
поделиться