Статьи

Удаление всех файлов .class с помощью Groovy

При выполнении простых тестов Java либо для изучения того, как что-то работает в Java, либо для создания примеров для моих сообщений в блоге, я часто храню примеры в одном каталоге на моей машине. Я решил, что хочу удалить все сгенерированные файлы .class из этого каталога. Есть несколько способов сделать это на компьютере с Linux , но я хотел удалить эти файлы на компьютере с Windows. Я знаю, что есть инструменты и способы сделать это в Windows , но я знал, что написание простого скрипта Groovy для этого потребует меньше времени, чем поиск такого инструмента в Интернете. Этот пост содержит и кратко описывает простой скрипт Groovy для удаления файлов .class.

deleteClassFiles.groovy

#!/usr/bin/env groovy
if (args.length < 1)
{
   println "Please specify directory under which .class files should be removed"
   println "  (including .class files in sub-directories)."
   System.exit(-1)
}

def directoryName = args[0]
println "Remove .class files in ${directoryName} and its subdirectories..."
def directory = new File(directoryName)
def classPattern = ~/.*\.class/
directory.eachFileRecurse(groovy.io.FileType.FILES)
{ file ->
   if (file ==~ classPattern)
   {
      println "Deleting ${file}..."
      file.delete()
   }
}

Приведенный выше скрипт удалит все файлы с именами, заканчивающимися суффиксом .class, в предоставленном каталоге или любом из его подкаталогов. Каталог указывается в сценарии с помощью одного аргумента командной строки, поэтому в этом случае я не использовал встроенную поддержку CLI Groovy и вместо этого полагался на неявную доступность Groovy параметра args, представляющего аргументы командной строки.

Сценарий Groovy, описанный в этом посте , использует метод расширения FileFileRecurse для расширения файлов Groovy GDK для рекурсивной итерации по именам файлов в предоставленном каталоге и его подкаталогах. Еще одна удобная функция Groovy, используемая в этом сценарии, — это применение поддержки регулярных выражений Groovy для указания шаблона (имена файлов заканчиваются расширением «.class»), а затем для использования сопоставителя шаблонов в условии, которое решает, какие файлы следует удалить.

Приведенный выше скрипт распечатывает файлы, которые будут удалены, так как он их удаляет. Можно легко улучшить сценарий, чтобы он принимал параметр, который отображал бы файлы, которые будут удалены без фактического удаления. Для меня этот скрипт стал еще одним доказательством того, что Groovy настолько прост в использовании, что иногда проще написать новый скрипт в Groovy для выполнения повседневных задач, чем найти существующие инструменты и скрипты в Интернете для загрузки.