php获取并删除目录及目录下所有的文件实例

用php程序删除目录和文件比到ftp删除有很多优势,首先进ftp就比较麻烦,然后删除大量文件的时候ftp删除很慢,还有就是程序只想删除文件夹下面的文件,而保留目录结构,可以用php来轻松的实现,再有比如生成的日志、缓存要清除用程序来完成显然轻松的多.

第一步,PHP获取目录下面所有文件和文件夹,代码如下:

  1. <?php
  2. $dir = "D:/"; //要获取的目录
  3. echo "********** 获取目录下所有文件和文件夹 ***********<hr/>";
  4. //先判断指定的路径是不是一个文件夹
  5. if (is_dir($dir)){
  6. if ($dh = opendir($dir)){
  7. while (($file = readdir($dh))!= false){
  8. //文件名的全路径 包含文件名
  9. $filePath = $dir.$file;
  10. //获取文件修改时间
  11. $fmt = filemtime($filePath);
  12. echo "<span >(".date("Y-m-d H:i:s",$fmt).")</span> ".$filePath."<br/>";
  13. }
  14. closedir($dh);
  15. }
  16. }
  17. ?>

第2步,删除目录及目录下所有的文件,代码如下:

  1. function delDirAndFile( $dirName ){
  2. if ( $handle = opendir( "$dirName" ) ) {
  3. while ( false !== ( $item = readdir( $handle ) ) ) {
  4. if ( $item != "." && $item != ".." ) {
  5. if ( is_dir( "$dirName/$item" ) ) {
  6. delDirAndFile( "$dirName/$item" );
  7. } else {
  8. if( unlink( "$dirName/$item" ) )echo "已删除文件: $dirName/$item<br />n";
  9. }
  10. }
  11. }
  12. closedir( $handle );
  13. if( rmdir( $dirName ) ) echo "成功删除目录: $dirName<br />n";
  14. }
  15. }

第3步,删除目录下面的文件,不删除目录,代码如下:

  1. function delFileUnderDir( $dirName ){
  2. if ( $handle = opendir( "$dirName" ) ) {
  3. while ( false !== ( $item = readdir( $handle ) ) ) {
  4. if ( $item != "." && $item != ".." ) {
  5. if ( is_dir( "$dirName/$item" ) ) {
  6. delFileUnderDir( "$dirName/$item" );
  7. } else {
  8. if( unlink( "$dirName/$item" ) ) echo "已删除文件:$dirName/$item<br />n";
  9. }
  10. }
  11. }
  12. closedir( $handle );
  13. }
  14. }

小结:这个我们先是从获取目录所有所文件与目录开始然后在基础上进行删除操作.