• PHP中的文件系统处理(一)


     PHP文件系统处理
         所有文件处理都是使用系统函数完成的。
         是基于Linux/Unix系统为模型
     
           文件系统处理的作用:
               1. 所有的项目离不开文件处理
               2. 可以用文件长时间保存数据
               3. 建立缓存, 服务器中文件操作
     
           文件处理
             1. 文件类型
                 以Linux为模型的, 在Windows只能获取file, dir或unknow 三种类型
                 在Linux/Unix下, block, char, dir, fifo, file, link, unknown和种型
                 block :块设置文件,磁盘分区,软驱, cd-rom等
                 char: 字符设备,I/O 以字符为单位, 键盘,打印机等
                 dir: 目录也是文件的一种
                 fifo:
                 file:
                 link:
                 unknown    
     
                  filetype("目录或文件名")   取得文件类型

    <?php
    echo filetype("./test.txt");
    ?>

     
                  is_array();
                  is_int();
                  is_string();
                  is_null;
                  is_bool();
                  
            is_dir -- 判断给定文件名是否是一个目录
            is_executable -- 判断给定文件名是否可执行
            is_file -- 判断给定文件名是否为一个正常的文件
            is_link -- 判断给定文件名是否为一个符号连接
            is_readable -- 判断给定文件名是否可读
            is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
            is_writable -- 判断给定的文件名是否可写
            is_writeable -- is_writable() 的别名

    <?php
    //is_dir -- 判断给定文件名是否是一个目录
    var_dump(is_dir("./test.txt"));
    echo "<br>";
    
    //is_executable -- 判断给定文件名是否可执行
    var_dump(is_executable("./test.txt"));
    echo "<br>";
    
    //is_file -- 判断给定文件名是否为一个正常的文件
    var_dump(is_file("./test.txt"));
    echo "<br>";
    
    //is_link -- 判断给定文件名是否为一个符号连接
    var_dump(is_link("./test.txt"));
    echo "<br>";
    
    //is_readable -- 判断给定文件名是否可读
    var_dump(is_readable("./test.txt"));
    echo "<br>";
    
    //is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
    var_dump(is_uploaded_file("./test.txt"));
    echo "<br>";
    
    //is_writable -- 判断给定的文件名是否可写
    var_dump(is_writeable("./test.txt"));
    echo "<br>";
    
    //is_writeable -- is_writable() 的别名
    ?>


             2. 文件的属性
                 file_exists();   检查文件或目录是否存在
                 filesize();
                 is_readable();
                 is_writeable();
                 filectime();
                 filemtime();
                 fileatime();
                 stat();
     

    <?php
    /*
    file_exists();   检查文件或目录是否存在
    filesize();     
    filectime();
    filemtime();
    fileactime();
    stat();
    */
    $filename="./test.txt";
    
    //file_exists();   检查文件或目录是否存在
    var_dump(file_exists($filename));
    echo "<br>";
    
    //filesize();    取得文件大小
    echo filesize($filename);
    echo "<br>";
    
    //filectime();    取得文件的 inode 修改时间
    echo date("F d Y H:i:s.", filectime($filename));
    echo "<br>";
    
    //filemtime();  取得文件修改时间
    echo date("F d Y H:i:s.", filemtime($filename)); 
    echo "<br>";
    
    //fileatime();   取得文件的上次访问时间
    
    echo date("F d Y H:i:s.",fileatime($filename));
    echo "<br>";
    
    //stat();   给出文件的信息
    echo "<pre>";
    print_r(stat($filename));
    echo "</pre>";
    echo "<br>";
    ?>


            3.文件的属性
                相对路径:(相对于当前目录的上级和下级目录)
                    .    当前目录
                    ..     上一级目录
                路径分隔符:
                    在Linux/Unix使用“/”
                    在windows中使用“”和“/”都可以
                绝对路径:
                    /  根路径
                    /images/imdex.php
                    这个根指的是操作系统的根或是存放网站的文档根目录
                        如果是在服务器中执行(通过PHP文件处理函数执行)路径,则“根”指的是操作视同的根
                        如果程序是下载的客户端,再访问服务器中的文件时,只有通过Apache访问,“根”指的是文档根目录。
                basename(url);   返回路径中的文件名部分
                dirname(url);    返回路径中的目录部分
                pathinfo(url);   返回文件路径的信息

    <?php
    $url1="./aaa/bbb/index.php";
    $url2="../www/yy/login.rar";
    $url3="C:/appserv/www/demo.html";
    $url4="http://localhost/yyy/ww.gif";
    
    //返回路径中的文件名部分
    echo basename($url1)."<br>";
    echo basename($url2)."<br>";
    echo basename($url3)."<br>";
    echo basename($url4)."<br>";
    echo "<hr>";
    
    //返回路径中的目录部分
    echo dirname($url1)."<br>";
    echo "<hr>";
    
    //返回文件路径的信息
    echo "<pre>";
    print_r(pathinfo($url1));
    echo "<pre>";
    ?>


            4.文件的操作相关的函数
                创建文件  touch("文件名");
                删除文件  unlink("文件路径");
                移动文件  为文件重新命名  rename("当前文件路径","目标文件路径");
                复制文件  copy("当前","目标");
            

    <?php
    //创建文件
    touch ("./test.txt");
    
    //删除文件
    //unlink("D:/APMServ5.2.6/www/htdocs/php/3/1/test.txt");
    //unlnk("test.txt");
    
    //移动文件  为文件重新命名
    //rename("./test.txt", "d:/test2.txt");
    
    //复制文件,将前者复制到后者中
    copy("test.txt", "d:/test4.txt")
    ?>


                一定要有PHP执行这个文件的权限

            和权限设置有关的函数(在Linux下)
            chgrp----改变文件所属的组
            chmod----改变文件模式
            chown----改变文件的所有者
            filegroup-----取得文件的组
            fileowner-----取得文件的所有者

  • 相关阅读:
    使用MobaXterm远程连接Ubuntu,启动Octave,界面不能正常显示
    ABP .Net Core 日志组件集成使用NLog
    ABP .Net Core Entity Framework迁移使用MySql数据库
    ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
    阿里云 Angular 2 UI框架 NG-ZORRO介绍
    Visual Studio 2019 Window Form 本地打包发布猫腻
    VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用
    ABP .Net Core 调用异步方法抛异常A second operation started on this context before a previous asynchronous operation completed
    ABP .Net Core To Json序列化配置
    .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
  • 原文地址:https://www.cnblogs.com/Y-HKL/p/5368522.html
Copyright © 2020-2023  润新知