zoukankan      html  css  js  c++  java
  • 如何用PHP遍历文件数目 或删除目录下的全部文件?

    先说一下基础知识:

    文件位置如下图所示:

    1、判断是文件还是目录

    var_dump(filetype("./aa/bb/cc.txt"));
    

      输出: string(4) "file" 

    var_dump(filetype("./aa")); 
    

        输出: string(3) "dir"

     2、判断是否是文件(是返回ture)

    var_dump(is_file("./aa"));  

         输出bool(false)

    3、判断是否是目录(是返回ture)

    var_dump(is_dir("./aa"));
    

      输出: bool(true)

    4、文件的访问、创建与修改时间

    echo date("Y-m-d H:i:s",fileatime("./aa")); //文件的上次访问时间
    
    filectime("./aa.txt"); //文件的创建时间
    
    echo date("Y-m-d H:i:s",filemtime("./aa.txt")); //文件的修改时间
    

     5、获取文件大小

    filesize("./aa.txt"); 
    

      6、判断文件是否存在

    file_exists("./aa.txt")
    

      7、服务器的根目录

    echo $_SERVER['DOCUMENT_ROOT'];
    

      输出:D:/phpStudy/WWW

    注意:/代表根,在网页里面代表www目录,在PHP里面代表磁盘根

    8、路径

    echo basename("./aa/bb/cc.txt"); //获取路径中的文件名
    echo dirname("../0508/DB.class.php"); //获取路径中的文件夹目录
    var_dump(pathinfo("../0508/DB.class.php")); //获取路径信息
    echo realpath("./aa/bb/cc.txt"); //将相对路径转化成绝对路径
    

      依次输出:

    cc.txt

    ../0508

    array(4) { ["dirname"]=> string(7) "../0508" ["basename"]=> string(12) "DB.class.php" ["extension"]=> string(3) "php" ["filename"]=> string(8) "DB.class" }
    D:phpStudyWWW2017-05519aabcc.txt

    9.目录操作

    mkdir("./aa"); //创建目录
    rmdir("./aa"); //删除目录,目录必须为空
    rename("./test","../ceshi"); //移动目录
    

      第一种遍历目录:

    var_dump(glob("./aa/bb/*.txt")); //获取目录下所有文件
    

      输出:

    array(6) {
      [0]=>
      string(14) "./aa/bb/cc.txt"
      [1]=>
      string(14) "./aa/bb/dd.txt"
      [2]=>
      string(14) "./aa/bb/ee.txt"
      [3]=>
      string(14) "./aa/bb/ff.txt"
      [4]=>
      string(14) "./aa/bb/gg.txt"
      [5]=>
      string(14) "./aa/bb/hh.txt"
    }

    第二种遍历目录:(重要)

    //打开目录,返回目录资源
    $dname = "./aa/bb";
    $dir = opendir($dname);
    
    //从目录资源里面读文件,每次读一个
    while($fname = readdir($dir))
    {
    	echo $dname."/".$fname."<br>";
    }
    
    //关闭目录资源
    closedir($dir);
    

      

    输出:

    ./aa/bb/.
    ./aa/bb/..
    ./aa/bb/cc.txt
    ./aa/bb/dd.txt
    ./aa/bb/ee.txt
    ./aa/bb/ff.txt
    ./aa/bb/gg.txt
    ./aa/bb/hh.txt

    10、文件整体操作

    touch("./aa.txt"); //创建文件
    copy("./aa.txt","../aa.txt"); //复制文件
    unlink("./aa.txt"); //删除文件
    

    11、文件内容操作

    echo file_get_contents("http://www.baidu.com"); //读取文件
    file_put_contents("./aa/bb/hh.txt","hello"); //写内容
    readfile("./11.txt"); //读取并输出
    var_dump(file("11.txt")); //读取文件内容,返回数组,每行是一个元素
    

      

    //打开文件
    $f = fopen("./11.txt","a");
    //打开文件并写入
    fwrite($f,"wwwww");
    
    //关闭文件
    fclose($f);
    

      其中:r只读;r+读写;w写清空;w+读写;a写入文件末尾;a+读写;x创建并以写入打开;x+创建并以读写打开;加一个b代表可操作二进制文件(建议加)

    利用遍历来计算文件夹下所有的个数

    <?php
    
    echo fileCount("./qiyezhan");
    
    function fileCount($fname)
    {
    	//该文件夹下所有文件数量
    	$sum = 0;
    	//判断给的是不是文件夹
    	if(is_dir($fname))
    	{
    		//打开文件夹
    		$dir = opendir($fname);
    		
    		while($wenjian = readdir($dir))
    		{
    			if($wenjian!="." &&$wenjian!="..")
    			{
    				//文件的完整路径
    				$furl = $fname."/".$wenjian;
    				if(is_file($furl))
    				{
    					$sum++;
    				}
    				else if(is_dir($furl))
    				{
    					//获取该文件夹下文件数量,累加
    					$sum = $sum + fileCount($furl);
    				}
    			}
    			
    		}
    		
    		//关闭文件夹
    		closedir($dir);
    		return $sum;
    	}
    	else
    	{
    		echo "给的文件夹不对";
    	}
    }
    
    ?>
    

      利用遍历删除全部文件

    <?php
    ShanChu("./qiyezhan");
    function ShanChu($fname)
    {
    	if(is_dir($fname))
    	{
    		//在删除之前,把里面的文件全部删掉
    		$dir = opendir($fname);
    		while($dname = readdir($dir))
    		{
                             //必须加这一项,不然可能会将整个磁盘给删掉
    			if($dname!="." && $dname!="..")
    			{
    				$durl = $fname."/".$dname;
    				if(is_file($durl))
    				{
    					unlink($durl);
    				}
    				else
    				{
    					ShanChu($durl);
    				}
    			}
    		}
    		closedir($dir);
    		//删除该文件夹
    		rmdir($fname);	
    	}
    	else
    	{
    		//如果是文件,直接删掉
    		unlink($fname);
    	}
    }
    
    
    ?>
    

     

  • 相关阅读:
    第六章 优化服务器设置--高性能MySQL 施瓦茨--读书笔记
    skip-external-locking --mysql配置说明
    mysql配置文件my.cnf详解
    Response.Redirect 打开新窗口的两种方法
    .net中Response.End() 和Response.Redirect("http://dotnet.aspx.cc");
    onclientclick与onclick的问题.
    a href="javascript:void(0)" 是什么意思?加不加上有什么区别?
    ashx是什么文件
    CSS里的 no-repeat
    css中 repeat-x 的简单用法
  • 原文地址:https://www.cnblogs.com/chenguanai/p/6881367.html
Copyright © 2011-2022 走看看