Java: как скопировать каталог, но исключить некоторые каталоги глубоко внутри основного каталога - PullRequest
1 голос
/ 01 июня 2011

Используя java, я хочу скопировать весь каталог, исключая некоторые подкаталоги (и все файлы внутри этих подкаталогов), по пути к файлу. Как я могу это сделать? Я видел несколько таких вопросов по SO, но с использованием Perl / ANT и т. Д., Но без использования Java.

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Попробуйте FileUtils.html # copyDirectory из Apache Commons IO. Одна из перегруженных версий принимает экземпляр FileFilter с одним простым способом, который вы хотите реализовать:

boolean accept(File pathname)

Также посмотрите список существующих удобных FileFilter реализаций в Commons IO:

  • AgeFileFilter
  • AndFileFilter
  • CanReadFileFilter
  • CanWriteFileFilter
  • DelegateFileFilter
  • DirectoryFileFilter
  • EmptyFileFilter
  • FileFileFilter
  • HiddenFileFilter
  • MagicNumberFileFilter
  • NameFileFilter
  • NotFileFilter
  • OrFileFilter
  • PrefixFileFilter
  • RegexFileFilter
  • SizeFileFilter
  • SuffixFileFilter
  • WildcardFileFilter
1 голос
/ 01 июня 2011

Вы можете сделать это так же, как на любом другом языке

  1. Начать с корня исходного каталога
  2. Просмотрите все дочерние элементы (например, используя поиск в ширину)
  3. Если вы хотите игнорировать ребенка, игнорируйте его Если дочерний элемент является каталогом, используйте File.mkdir () для этого дочернего элемента. Если у ребенка есть файл, скопируйте его Откройте файл с помощью FileInputStream Запись прочитанных данных в новый файл с помощью FileOutputStream
  4. Повторите с каждым дочерним каталогом

Или, вы можете сделать это простым способом
1. Apache FileUtils
2. Библиотека копирования файлов Java проект

...