例如,我有一个名为“Temp”的文件夹,我想使用PHP删除或刷新该文件夹中的所有文件。我可以这样做吗?


当前回答

在PHP中删除文件夹中的所有文件的简单和最好的方法

$files = glob('my_folder/*'); //get all file names
foreach($files as $file){
    if(is_file($file))
    unlink($file); //delete file
}

从这里得到这个源代码- http://www.codexworld.com/delete-all-files-from-folder-using-php/

其他回答

发布了一个通用的文件和文件夹处理类,用于复制,移动,删除,计算大小等,可以处理单个文件或一组文件夹。

https://gist.github.com/4689551

使用方法:

复制(或移动)一个文件或一组文件夹/文件:

$files = new Files();
$results = $files->copyOrMove('source/folder/optional-file', 'target/path', 'target-file-name-for-single-file.only', 'copy');

删除单个文件或删除路径下的所有文件和文件夹:

$files = new Files();
$results = $files->delete('source/folder/optional-file.name');

计算单个文件或一组文件夹中文件的大小:

$files = new Files();
$results = $files->calculateSize('source/folder/optional-file.name');
$files = glob('path/to/temp/*'); // get all file names
foreach($files as $file){ // iterate files
  if(is_file($file)) {
    unlink($file); // delete file
  }
}

如果你想删除像.htaccess这样的“隐藏”文件,你必须使用

$files = glob('path/to/temp/{,.}*', GLOB_BRACE);

我更新了@Stichoza的答案,通过子文件夹删除文件。

function glob_recursive($pattern, $flags = 0) {
    $fileList = glob($pattern, $flags);
    foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
        $subPattern = $dir.'/'.basename($pattern);
        $subFileList = glob_recursive($subPattern, $flags);
        $fileList = array_merge($fileList, $subFileList);
    }
    return $fileList;
}

function glob_recursive_unlink($pattern, $flags = 0) {
    array_map('unlink', glob_recursive($pattern, $flags));
}

在PHP中删除文件夹中的所有文件的简单和最好的方法

$files = glob('my_folder/*'); //get all file names
foreach($files as $file){
    if(is_file($file))
    unlink($file); //delete file
}

从这里得到这个源代码- http://www.codexworld.com/delete-all-files-from-folder-using-php/

我已经构建了一个非常简单的包,叫做“Pusheh”。使用它,您可以清除目录或完全删除目录(Github链接)。Packagist上也有。

例如,如果你想清除Temp目录,你可以这样做:

Pusheh::clearDir("Temp");

// Or you can remove the directory completely
Pusheh::removeDirRecursively("Temp");

如果你感兴趣,可以查看维基。