Как удалить .DS_Store используя unlink - PullRequest
0 голосов
/ 27 апреля 2020

Я создал простую функцию для удаления всех файлов внутри папки и самой папки.

function fn_delete_dir($dir)
{
    if (is_dir($dir)) {
        $dir = rtrim($dir, '/') . '/'; // add slash to end of string
        $files = glob($dir . '*', GLOB_MARK);

        foreach ($files as $vfile) {
            if (is_dir($vfile)) {
                fn_delete_dir($vfile);
            } else {
                unlink($vfile);
            }
        }

        rmdir($dir);

        return 1;
    }
}


$dir = $_SERVER['DOCUMENT_ROOT'] . '/page/videography/images/videos/thumbs';

if (fn_delete_dir($dir)) {
    echo 'all files deleted';
} else {
    echo 'deletion failed';
}

Это используется для работы на моем windows компьютере. Поскольку я переключился на Ma c, эта функция не работает с сообщением msg

Warning: rmdir(/Users/xxx/Sites/page/videography/images/videos/thumbs/): Directory not empty in /Users/xxx/Sites/[age/testing.php on line 18

. Я сделал scandir, просто чтобы проверить, есть ли скрытые файлы, и получил следующее

   Array
(
    [0] => .
    [1] => ..
    [2] => .DS_Store
    [3] => thumbs
)

Я предполагаю, что проблема в .DS_Store и / или thumbs

Итак, вопрос в том, как мне удалить эти скрытые файлы?

1 Ответ

0 голосов
/ 27 апреля 2020

Благодаря @ axia c я смог заново создать функцию, используя opendir () / readdir () / closedir ()

Эта функция может удалять файлы, такие как thumbs .DS_Store ...

function fn_delete_dir($dir)
{
    if (is_dir($dir)) {
        $dir = rtrim($dir, '/') . '/'; // add slash to end of string

        if ($dh = opendir($dir)) {
            while (($file = readdir($dh)) !== false) {
                if ($file != "." && $file != "..") {
                    if (is_dir($dir . $file)) {
                        fn_delete_dir($dir . $file);
                    } else {
                        unlink($dir . $file);
                    }
                }
            }

            closedir($dh);
            rmdir($dir . $file);

            return 1;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...