我该怎么做?Kohana 3提供了任何方法吗?
我该怎么做?Kohana 3提供了任何方法吗?
<?php
// ensure $dir ends with a slash
function delTree($dir) {
$files = glob( $dir . '*', GLOB_MARK );
foreach( $files as $file ){
if( substr( $file, -1 ) == '/' )
delTree( $file );
else
unlink( $file );
}
rmdir( $dir );
}
?>
glob
函数(参见 http://php.net/glob)将返回与模式匹配的所有文件 -- *
将匹配所有文件,这意味着 glob 将返回 $dir
指向的目录中的所有文件列表;;GLOB_MARK
表示“在返回的每个目录后添加一个斜杠”。 - Pascal MARTINrmdir($dir);
行。 - PaulSkinnerGLOB_NOSORT
以加快删除速度,因此它将是 $files = glob( $dir . '*', GLOB_MARK | GLOB_NOSORT );
。 - terales $files = glob('your/folder/' . '*', GLOB_MARK);
foreach($files as $file)
{
if (is_dir($file)) {
self::deleteDir($file);
} else {
unlink($file);
}
}
/**
* 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
你尝试过在目录中使用unlink吗?
chdir("file");
foreach (glob("N*") as $filename )
{
unlink($filename);
}
这将删除以N开头的文件名
我不确定Kohana 3,但我会同时使用DirectoryIterator()
和unlink()
。