• 5月24 文件操作


    php中文件包含文件和文件夹,其中文件夹又称为目录

    以下的操作都是在同一级目录(test0524)下新建文件:aa.txt以及文件夹test,并且test中含有文件bb.txt

    一:判断文件类型(都是以数组形式输出)

    filetype("./test");    //判断文件类型,返回dir目录

    filetype("./aa.txt");  //判断文件类型,返回file文件

    由上可知判断文件类型,如果是文件返回file,如果是目录返回dir

    is_dir("./test");  //判读给定的路径是不是目录,返回bool型

    is_file("./aa.txt");  //判读给定的路径是不是文件,返回bool型

    二:判断文件属性

    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"));  //获取文件的修改时间

    echo filesize("./aa.txt");   //获取文件的大小

    var_dump(file_exists("./aa.txt"));    //判断文件名是否存在

    三:文件的路径

    1. 当前目录:./ 或者不写
    2. 上级目录: ../
    3. 下级目录:文件夹名/
    4. 根目录:/
    根目录/有两层意思:如果/是在php程序里面的话代表:硬盘根目录,如果/是在网页里的话代表:代表服务器的根目录(www)。
    做文件上传(头像,产品图片),保存在数据的路径一定要写绝对路径

    例题:

    var_dump(file_exists("/wamp"));   //代表是硬盘的根目录(是e盘下的文件)

    <img src="/2.jpg" />    代表的是服务器的目录(www)外面的2.jpg

    echo $_SERVER['DOCUMENT_ROOT'];    //取服务器www的根目录  返回结果  E:/wamp/www/

    echo basename("./aa.txt");    //从路径中获取文件名    aa.txt

    echo basename("./aa.txt",".txt");    //返回没有后缀的文件名    aa

    echo dirname("./test/bb.txt");    //返回路径中的目录   ./test

    var_dump(pathinfo("./test/bb.txt"));   //返回文件信息   

    echo realpath("./test/bb.txt");      //将相对路径转为绝对路径   E:wampwww est0524 estb.txt

    但是当已经为绝对路径是返回为空

    四:目录操作

    (1)遍历目录的第一种方法

    var_dump(glob("./ueditor/utf8-php/*"));         //返回目录下所有的文件

    var_dump(glob("./ueditor/utf8-php/*.js"));     //可以根据后缀筛选

    例题:(1)获取文件的个数

    function ShuLiang($filename)
    {
        if(is_dir($filename))//判断是否是目录
        {
            $attr = glob($filename."/*");
            $sl = 0;
            foreach($attr as $v)
            {
                if(is_dir($v))
                {
                    $sl = $sl+ShuLiang($v);    
                }
                else
                {
                    $sl = $sl+1;    
                }
            }
            return $sl;    
        }
        else if(is_file($filename))//判断是否是文件
        {
            return 1;    
        }
        else
        {
            return 0;    
        }
        
    }
    
    
    echo ShuLiang("../FUXI");
    View Code

    (2)获取文件的大小

    方法一(1)网上找来的

    <?php
    //计算文件的大小
    
    echo dir_size("../test0521");
    function dir_size($dir)
    {
            $dh = opendir($dir);             //打开目录,返回一个目录流
            $size = 0;      //初始大小为0 
            while(false !== ($file = @readdir($dh)))
            {     //循环读取目录下的文件
               if($file!='.' and $file!='..')
               {
                $path = $dir.'/'.$file;     //设置目录,用于含有子目录的情况
                    if(is_dir($path))
                    {
                    $size += $this->dir_size($path);  //递归调用,计算目录大小
                    }
                    elseif(is_file($path))
                    {
                        $size += filesize($path);   //计算文件大小
                    }
                } 
            }   
            closedir($dh);             //关闭目录流
            //return $size;               //返回大小
        }
    
    ?>
    View Code

    方法二(2)自己做的

    <?php
    //获取文件的大小
    //filesize("./aa.txt");
    
    function Size($filename)
    {
        if(is_dir($filename))//判断是否是目录
        {
            $attr = glob($filename."/*");
            $size = 0;
            foreach($attr as $v)
            {
                if(is_dir($v))
                {
                    $size = $size+Size($v);    
                }
                else
                {
                    $size = $size+filesize($v);    
                }
            }
            return $size;    
        }
        else if(is_file($filename))//判断是否是文件
        {
            return filesize($filename);    
        }
        else
        {
            return 0;    
        }
        
    }
    echo Size("../test0521");
    ?>
    View Code

    (2)遍历目录的第二种方法(有开启和关闭)

    打开目录资源

    $dir = opendir("./liucheng");

    操作

    echo readdir($dir)."<br>";//读文件 . 当前目录

    echo readdir($dir)."<br>";//读文件 ..上级目录

    echo readdir($dir)."<br>";//读文件

    输出的结果:

        while($v=readdir($dir))
        {
          if($v=="."||$v=="..")
          {

          }
          else
          {
            echo $v."<br>";
          }
        }

     将上级和当前目录去掉,遍历文件名

    关闭目录资源

    closedir($dir);

    rewinddir($dir);//重置目录资源的指针

    目录操作

    mkdir("./aa");   //创建目录

    rmdir("./aa");   //删除是有要求的必须是空的文件夹

    rename("./test","./aa/test1");    //移动 老的路径和新的路径(在移动过程中可以重命名)

    五:文件操作

    touch("cc.php");    //创建文件可以.php .txt .dox

    copy("./aa.txt","../aa.txt");   //复制文件

    unlink("./cc.txt");   //删除文件

    echo file_get_contents("./aa.txt");    //读取文件的内容

    echo file_get_contents("http://www.baidu.com");    //读取本地或者远程

    file_put_contents("./aa.txt","权志龙");   //往文件里面写入内容

    file_put_contents("aa.txt",file_get_contents("http://www.baidu.com"));      //写入远程文件内容(覆盖)

    readfile("./aa.txt");      //读取文件内容并显示,不用输出

    var_dump(file("./aa.txt"));    //读取文件内容并且返回数组,数组里面是每一行

    六:对文件内容的具体操作

    打开文件资源:

    $fp = fopen("文件名","模式 r w");

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


    打开文件资源

    $fp = fopen("./aa.txt","a");

    操作

    echo fgetc($fp);
    echo fgetc($fp);
    echo fgetc($fp);  //输出以字节方式耗时较长
    echo fgetc($fp);
    echo fgetc($fp);
    echo fgetc($fp);
    echo fgetc($fp);
    echo fgetc($fp);

    循环遍历的方式

    while($v=fgetc($fp))
    {
    echo $v;     //一个一个来的
    }
     

    获取文件内容一行一行的来,用处并不是很大

    echo fgets($fp);
    echo fgets($fp);
    echo fgets($fp);
    echo fgets($fp);


    echo fread($fp,5);   //读取文件内容,可以读取一定长度的内容

    fwrite($fp,"hello");    //写入内容,会将原有的内容覆盖(a方式会追加,w方式会覆盖)

    关闭文件资源

    fclose($fp);

    摘自PHP手册

  • 相关阅读:
    python 安装预编译库注意事项-pip
    Lucene 入门需要了解的东西
    PHPSTORM 与 Xdebug 配合调试
    Windows 下命令行修改文件夹的控制权限 Cacls
    PHP 解压zip文件的函数封装
    PHP 关于回调的用法
    CentOS7 安装 swoole
    CentOS7 安装 scala 2.11.1
    PHP 代码质量检测工具的安装与使用
    PHP 新建动态类的代码
  • 原文地址:https://www.cnblogs.com/Duriyya/p/5527398.html
Copyright © 2020-2023  润新知