php删除文件程序代码

在php中要删除文件我们需要使用php提供的unlink()文件删除函数,下面我来给大家详细介绍利用unlink删除文件的方法,有需要的朋友可参考本教程。

unlink(filename,context)

例代码如下:

  1. if (unlink($file_delete)) {
  2. echo "The file was deleted successfully.", "n";
  3. } else {
  4. echo "The specified file could not be deleted. Please try again.", "n";
  5. }

判断文件是否存在,代码如下:

  1. $myfile = "./test1.txt";
  2. if (file_exists($myfile)) {
  3. $result=unlink ($myfile);
  4. echo $result;
  5. }

批量删除文件,代码如下:

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

删除目录下文件并指定那些不删除,代码如下:

  1. <?php
  2. header("content-Type: text/html; charset=utf-8");
  3. //配置开始
  4. $path=".";//在些设置所删除的目录.为当前目录 如:删除path目录,引号里请添path;
  5. $guolv="del.php,install.php,path";//设置需要过滤的文件或文件夹用英文状态下,号分隔
  6. //配置结束
  7. if($_GET['action']=="del"){
  8. $file= array_values_recursive(recurdir($path,$guolv));
  9. foreach($file as $k => $v){
  10. remove_directory($v);
  11. }
  12. }else{
  13. echo "您的配置如下<br>
  14. 要删除的目录为:
  15. ";
  16. if($path==".")echo "当前目录";else echo $path;
  17. echo "<br>您要过滤的文件或文件夹有:".$guolv."<br>
  18. 如果确认过滤请<a href='?action=del'>点击此处开始删除相应的目录及目录下的所有文件</a>,如果配置不正确请到文件中修改
  19. ";
  20. }
  21. //删除目录及文件
  22. function remove_directory($dir) {
  23. foreach(glob($dir) as $fn) {
  24. echo " removing $fn<br>n";
  25. if (!is_writable($fn))@chmod($fn, 0777);
  26. if(is_dir($fn)){@rmdir($fn);}else{@unlink($fn);}
  27. }
  28. }
  29. //扫描目录
  30. function recurdir($pathname,$guolv='del.php')
  31. {
  32. $result=array();$temp=array();
  33. //检查目录是否有效和可读
  34. if(!is_dir($pathname) || !is_readable($pathname))
  35. return null;
  36. //得到目录下的所有文件夹
  37. $allfiles=scandir($pathname);
  38. foreach($allfiles as $key => $filename)
  39. {
  40. //如果是“.”或者“..”的话则略过
  41. if(in_array($filename,array('.','..')))continue;
  42. if(count($guolv)>0){$lv=explode(",",$guolv);if(in_array($filename,$lv))continue;}
  43. //得到文件完整名字
  44. $fullname =$pathname . "/" .$filename;
  45. //如果该文件是目录的话,递归调用recurdir
  46. $temp[]=$fullname;
  47. if(is_dir($fullname)){
  48. $nowpath=explode("/",$fullname);
  49. if(count($guolv)>0){$lv=explode(",",$guolv);if(in_array($nowpath[count($nowpath)-1],$lv))continue;}
  50. $result[$filename] = recurdir($fullname);}
  51. }
  52. //最后把临时数组中的内容添加到结果数组,确保目录在前,文件在后
  53. foreach($temp as $f){
  54. $result[]=$f;
  55. }
  56. return $result;
  57. }
  58. //获取所有文件
  59. function array_values_recursive($ary)
  60. {
  61. $lst = array();
  62. foreach( array_keys($ary) as $k ){
  63. $v = $ary[$k];
  64. if (is_array($v)) {$lst = array_merge( $lst, array_values_recursive($v));}else{$lst[] = $v;}
  65. }
  66. return $lst;
  67. }
  68. ?>