Предположим, что у меня есть File f
, который представляет каталог, тогда f.delete()
удалит только каталог, если он пуст. Я нашел примеры в Интернете, которые используют File.listFiles()
или File.list()
, чтобы получить все файлы в каталоге, а затем рекурсивно пройти структуру каталогов и удалить все файлы. Однако, поскольку возможно создание бесконечно рекурсивных структур каталогов (как в Windows, так и в Linux (с символическими ссылками)), возможно, возможно, что программы, написанные в этом стиль никогда не завершится.
Итак, есть ли лучший способ написать такую программу, чтобы она не попадала в эти ловушки? Нужно ли мне отслеживать всюду, по которой я прошел, и убедиться, что я не обойдусь кругами или не получится лучше?
Обновление: В ответ на некоторые ответы (спасибо, ребята!) - я бы предпочел, чтобы код не следил за символическими ссылками и оставался в каталоге, который должен был удалить. Могу ли я полагаться на реализацию Commons-IO для этого, даже в случае Windows?