Решение Pascal работает не на всех ОС. Для этого я создал другое решение. Код является частью статической библиотеки классов и является статическим.
Удаляет все файлы и каталоги в данном родительском каталоге.
Функция является рекурсивной для подкаталогов и имеет возможность не удалять родительский каталог ($ keepFirst).
Если родительский каталог не существует или не является каталогом, возвращается 'null'. В случае успешного удаления возвращается true.
/**
* Deletes all files in the given directory, also the subdirectories.
* @param string $dir Name of the directory
* @param boolean $keepFirst [Optional] indicator for first directory.
* @return null | true
*/
public static function deltree( $dir, $keepFirst = false ) {
// First check if it is a directory.
if (! is_dir( $dir ) ) {
return null;
}
if ($handle = opendir( $dir ) ) {
while (false !== ( $fileName = readdir($handle) ) ) {
// Skips the hidden directory files.
if ($fileName == "." || $fileName == "..") {
continue;
}
$dpFile = sprintf( "%s/%s", $dir, $fileName );
if (is_dir( $dpFile ) ) {
self::deltree( $dpFile );
} else {
unlink( $dpFile );
}
} // while
// Directory removal, optional not the parent directory.
if (! $keepFirst ) {
rmdir( $dir );
}
} // if
return true;
} // deltree