• php部分--文件操作


    php中的文件指的是文件和文件夹,不是单指文件。
    
    1.判断文件(判断是文件还是文件夹)
    找文件,输出结果为file,代表的是文件。
    var_dump(filetype("./aa.txt"));
    找文件夹,输出的是dir,代表的是目录。
    var_dump(filetype("./aa"));
    判断是不是文件,返回的是true
    var_dump(is_file("./aa.txt"));
    判断是不是文件夹,返回的是true

    var_dump(is_dir("./aa"));
    2.文件属性
    获取当前服务器的根www
    echo $_SERVER['DOCUMENT_ROOT']; 
    获取文件上次访问时间,返回的是时间戳。
    echo date(fileatime("./aa.txt"));
    把时间戳转化为时间。
    echo date("Y-m-d h:i:s",fileatime("./aa.txt"))
    获取文件创建时间
    echo date("Y-m-d h:i:s",filectime("./aa.txt"));
    获取文件修改时间
    echo date("Y-m-d h:i:s",filemtime("./aa.txt"));//
    返回文件的大小,单位是字节b。
    echo filesize("aa.txt");
    判断文件是否存在,存在返回true,不存在返回flase。
    var_dump(file_exists("aa.txt"));
    3.文件路径
    
    ./代表当前路径
     ../代表上级路径
    在页面指文档根,在php里面的根代表是磁盘目录,网页里面/也是代表根,是www目录。
    返回D:/wamp/www/,取的是服务器的根。
    echo $_SERVER['DOCUMENT_ROOT'];
    返回index.php,返回的是文件名。
    echo basename("/wamp/www/index.php");
    返回index,返回的只是文件名。
    echo basename("/wamp/www/index.php",".php");
    返回/wamp/www,只是获取目录。
    echo dirname("/wamp/www/index.php");
    返回数组,里面是文件存在的目录、文件名、文件格式等信息。
    var_dump(pathinfo("/wamp/www/index.php"));
    返回D:wampwwwwenjiancaozuoaa.txt,把相对路径转化为绝对路径。
    echo realpath("./aa.txt");
    4.目录操作
    
    创建目录
    mkdir("./bb");
    删除目录,只能删除空文件夹。文件夹里有内容是不能删除的,会报错。
    rmdir("bb");
    移动文件夹,实际上是把文件重新命名位置。
    rename("./cc","./aa/cc");
    移动的同时可以更改文件名。
    rename("./cc","./aa/dd");
    5.遍历目录**
    
    遍历租房文件夹下所有的文件,相当于未按里面的额搜索。
    var_dump(glob("./zufang/*"));
    遍历文件格式为php的文件
    var_dump(glob("./zufang/*.php"));
    打开目录资源,打开以后一定要记得关闭。
    $dir = opendir("./zufang");
    返回.  .代表当前目录
    echo readdir();
    返回..  ..代表上级目录
    echo readdir();
    返回第一个文件
    echo readdir();
    返回第二个文件
    echo readdir();
    //遍历出所有的文件,文件夹也可以读取。
     while($f = readdir($dir))
     {
        echo $f;
    }
    关闭目录资源
    closedir($dir);//
    例题1:方法1:给一个文件夹,读取文件夹里面文件的数量
    echo ShuLiang("./zufang");
    function ShuLiang($filename)
    {
         $sum = 0;
        $dir = opendir($filename);
       while($f = readdir($dir))
         {
            if($f=="." || $f=="..")//如果遍历出的是.或者..,什么也不执行.
           {
                
             }
            else
           {
                $lujing = $filename."/".$f;
                if(is_file($lujing))
               {
                   $sum++;
                }
                 else
                 {
                    $sum = $sum+ShuLiang($lujing);
                 }
             }
        }
        closedir($dir);
        return $sum;
     }

    例题1:方法2:该方法用来获取指定文件夹下文件的数量

    function ShuLiang($filename)
    {
    $attr = glob($filename."/*");
    $n = count($attr);
    
    foreach($attr as $v)
    {
    if(is_dir($v))
    {
    $n = $n+ShuLiang($v);
    }
    }    
    
    return $n;
    }
    echo ShuLiang("./0904");

    例题2:获取某一个目录下所有文件的大小

    function Fsize($fname)
    {
    $size = 0;
    $dir = opendir($fname);
    
    //遍历目录,找到文件,累加大小
    while($u = readdir($dir))
    {
    if($u=="." || $u=="..")
    {
    }
    else
    {
    $zfname = $fname."/".$u;
    if(is_file($zfname))
    {
    $size += filesize($zfname);
    }
    }
    }
    
    //找到子目录,获取子目录下文件大小
    rewinddir($dir);
    while($u = readdir($dir))
    {
    if($u=="." || $u=="..")
    {
    }
    else
    {
    $zfname = $fname."/".$u;
    if(is_dir($zfname))
    {
    $size += Fsize($zfname);
    }
    }
    }
    
    closedir($dir);
    return $size;
    }
    
    echo Fsize("./0904");
    6.文件操作
    (1)文件整体操作
    创建文件
    touch("./cc.txt");
    赋值文件,第一个参数是要复制的文件,第二个是把文件复制到哪里。
    copy("./cc.txt","./aa/cc.txt");//
    删除文件
    unlink("./cc.txt");//
    读取文件内容只能读取txt、html、php等,word、wxcle文档不能读取。
    echo file_get_contents("./aa.txt");//
    这个方法比较重要,可以从网上抓取数据,用正则表达式匹配。
    echo file_get_contents("http://www.baidu.com");//
    往文件里写内容,写的内容会覆盖原来的内容。
    file_put_contents("./aa.txt","hello");//
    修改往网页里面的内容
    file_put_contents("./ceshi.php","hello");//
    获取并且输出,前面没有写输出。 file_get_contents需要写输出echo。
    readfile("http://www.baidu.com");//
    把网页的代码一行一行的显示出来。
    var_dump(file("http://www.baidu.com"));//
    第一个参数是打开的文件,第二个是打开的方式,方式具体可以查看php手册。
    $f = fopen("./aa.txt","r");//
    aa.txt的内容是hello。这里返回的是h
    echo fgetc($f);//
    返回e
    echo fgetc($f);//
    返回l
    echo fgetc($f);//
    ....fgetc()是一次读一个
    
    一次读一行
    echo fgets($f);
    读取的长度,这里是读取2个长度,返回he。
     echo fread($f,2);
    文件打开以后一定要关上,如果不关是不能进行别的操作的。*/
     fclose($f);
    a方式是追加
    $f = fopen("./aa.txt","a");
    把world写在hello后面
     fwrite($f,"world");
     fclose($f);
    给一个文件夹,删除该文件夹
    ShanChu("./zufang");
    
    function ShanChu($filename)
    {
       if(is_dir($filename))//判断是文件
       {
            $dir = opendir($filename);//打开文件夹
             
          while($f = readdir($dir))//遍历出文件夹里所有的内容
           {
               if($d=="." || $d=="..")//去掉.和..
                {
                  
               }
                else//操作不是.和..的内容
             {
                    $fname = $filename."/".$f;//找到遍历出的内容,拼出来的格式类似wamp/zufang
                    if(is_file($fname))//如果是文件
                  {
                        unlink($fname);
                    }
                  else//如果是文件夹
                   {
                        ShanChu($fname);//再调用ShanChu方法,删除的文件夹变了。
                    }
              }
            }
           closedir($dir);//关闭文件夹
           rmdir($filename);//把文件夹里的内容都删除以后,删除文件夹
       }
         else//如果是空文件夹
        {
             unlink($filename);//删除该空文件夹
         }
     }
    
    
  • 相关阅读:
    leetcode933
    leetcode929
    leetcode31
    leetcode29
    leetcode166
    2019-9-2-win10-uwp-保存用户选择文件夹
    2019-9-2-win10-uwp-保存用户选择文件夹
    2018-8-10-如何移动-nuget-缓存文件夹
    2018-8-10-如何移动-nuget-缓存文件夹
    2019-9-2-C#判断文件是否被混淆
  • 原文地址:https://www.cnblogs.com/xingyue1988/p/6287269.html
Copyright © 2020-2023  润新知