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