zoukankan      html  css  js  c++  java
  • 浅谈PHP 文件操作

    文件操作

    1.只能操作服务器的文件

    2.文件包含目录和文件

    1、判断文件类型:

    var_dump(filetype("../0529"));     //返回文件的类型:目录dir 文件file,
    
    var_dump(is_dir("../11.php"));     //判断路径是不是目录,返回布尔类型
    
    var_dump(is_file("../11.php"));     //判断路径是不是文件,返回布尔类型

     

    2、文件属性:

    复制代码
    echo date("Y-m-d H:i:s",fileatime("../11.php")); //上次访问时间  返回一个时间戳,使用data格式化
    
    echo date("Y-m-d H:i:s",filectime("../11.php")); //创建时间
    
    echo date("Y-m-d H:i:s",filemtime("../11.php")); //修改时间
    
    echo filesize("../11.php");                                     //文件大小,字节为单位
    
    var_dump(file_exists("../12.php"));                     //判断文件是否存在
    复制代码

    3、文件路径:

      (1)当前路径:./  上级目录:../  下级目录:目录/  根路径:/

    (2)如果是php里面的根(/)路径代表:磁盘的根

    (3)如果是在网页里面的根(/)路径代表:服务器的根(www目录)

    复制代码
    echo $_SERVER['DOCUMENT_ROOT'];     //取服务器的根路径
    
    echo basename("../11.php");                     //从路径中获取带后缀的文件名
    
    echo basename("../11.php",".php");         //从路径中获取不带后缀的文件名
    
    echo dirname("../0529/aa.php");             //取径中除去文件名的目录
    
    var_dump(pathinfo("../0529/aa.php"));     //返回目录信息,格式为数组
    
    echo realpath("../0529/aa.php");             //将相对路径转化为绝对路
    复制代码

    4、操作目录:

    复制代码
    var_dump(glob("../tp/*.php"));     //获取目录下所有的文件*  某个后缀的*.php
    
    通过遍历    glob    输出子文件
    
    $attr = glob("../tp/*");
    
    for($i=0;$i<count($attr);$i++){
    
        echo $attr[$i]."<br>";
    
    }
    复制代码

    5、使用目录资源:

    复制代码
    $dir = opendir("");打开资源目录
    
    closedir($dir) ;关闭资源目录
    
    readdir($dir);读取目录下的文件,执行一次读一个
    
    rewinddir($dir); 指针返回最初
    复制代码

     

    6、通过目录资源遍历:

    复制代码
    echo readdir($dir); //读取目录下的文件,执行一次读一个
    
    $dir = opendir("../tp"); //打开目录资源
    
    while($wj = readdir($dir)){
    
        echo $wj."<br>";
    
    }
    
    closedir($dir); //关闭目录资源
    
    rewinddir($dir);//将指针重置
    复制代码

     

    注意:

    使用readdir()读取的第一个和第二个内容

      第一个是. 代表当前目录

      第二个是.. 代表上级目录

    在使用目录资源遍历文件夹的时候要注意将前两个排除

    7、目录操作:

    (1)创建目录(文件夹)

      mkdir("./test");

    (2)删除目录(文件夹)只能删除空的文件夹

      rmdir("./test");

    (3)移动目录(文件夹)

      rename("./test","../test11");

    8、文件操作:

    复制代码
    touch("./test.txt");//创建文件
    
    copy("./test.txt","../test.txt"); //复制文件
    
    unlink("./test.docx"); //删除文件
    echo file_get_contents("./test.txt"); //获取文件内容:txt 页面
    
    echo file_get_contents("http://www.baidu.com"); //远程获取内容
    
    file_put_contents("./test.txt","hello"); //向文件写入内容
    
    readfile("./test.txt"); //获取文件内容并且直接输出
    
    var_dump(file("./test.txt")); //读取文件内容,返回数组,数组的每个元素对应的是一行
    复制代码

    9、对文件内容进行操作:

    (1)打开文件资源

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

     

    (2)操作文件

    复制代码
    echo fgetc($fp); //每次读一个字符
    
    while(!feof($fp)) //判断文件是否读到末尾
    
    {
    
        echo fgetc($fp);
    
    }
    
    echo fgets($fp); //每次读一行
    
    echo fgets($fp);
    
    echo fread($fp,10); //读取特定长度
    
    $str = "ni hao dhakhdak 
     akdhka";
    
    $str = iconv("utf-8","gb2312",$str);
    
    fwrite($fp,$str);
    复制代码

    (3)关闭文件资源

      fclose($fp);

    10、文件操作:

    (1)写入字节数 = File_put_contents(文件地址, 内容)

    写入文件不存在,自动创建。

    默认为替换写:

             

    支持使用追加写:

    第三个参数使用FILE_APPEND常量表示:

            

    (2)Fopen();打开文件句柄(PHP与文件间数据通道)

    (1)参数1:文件地址

    (2)参数2:打开方式(模式),打开文件后希望完成那种操作,可以在模式位置进行限制。

      PHP提供了如下一些的打开模式:

    R(read)读模式

    W(write)替换写模式,将文件内容清零,自动创建不存在的文件。

    A(append)追加写模式

    X 替换写,不会自动创建不存在的文件。(只能打开已经存在的文件)

    +扩展,扩展了操作。

    R+ 读写模式,将文件指针放在文件开头。

    W+ 读替换写模式,将文件内容清零,将文件指针放在文件开头,自动创建不存在的文件。

    A+ 读追加写模式,写操作永远在文件末尾,读操作受限于文件指针。

    X+ 读替换写模式,将文件内容清零,将文件指针放在文件开头,不会自动创建不存在的文件。(只能打开已经存在的文件)

                 

      在都可以执行读写时,差异在于,打开文件时,初始化的工作不同,针对初始化的文件指针位置,文件内容。

     

    (3)Fread(文件句柄, 长度);读取,读取指定长度的字符串内容(单位字节)

           

           

        Tip:长度是有个最大值。为8192个字节。

    (4)Fgets(文件句柄,长度);读取,读取指定长度的字符串

    长度,指的是会读取长度-1个字节。

         

    除了长度外,行末也是该函数的终止读操作条件。取决于先满足那个条件。

         

    因此也称读行函数。最常用。fgetS($handle, 1024)

    (5)fgetC(文件句柄);读取,一次读取一个字节的数据

     

    读取指针位置字符,操作时会移动指针。

    (6)fwrite(文件句柄,写入内容);写,在指定位置写入内容,通常由文件指针指示如果是a模式,不论指针在哪里,只能在末尾写。

     

     

    (7)fclose();

    关闭句柄

       

    (8)Ftell()

        获取指针位置

    (9)Fseek()

    设置指针位置

        

    R+:

    读写都受指针影响。写替换掉原有字节写。

    W+:

    清空内容

    A+/a:

    指针位置具有不确定因素。

    A+,读受指针影响,写就是追加。

    (10)Filemtime(文件地址)

      文件的最后修改时间。

    (11)Filesize(文件地址)

         

         统计目录大小。

  • 相关阅读:
    我把 Spring Boot Banner 换成了美女背景后……
    玩大发了,Tomcat 8.5 升级有坑…
    10 分钟快速上手 Shiro 新手教程
    为什么 HashMap 的加载因子是0.75?
    图解 Spring 循环依赖,写得太好了!
    单点登录的实现原理是什么?怎么实现?
    Maven三种仓库详解
    为什么 wait,notify,notifyAll 在 Object 类定义而不是 Thread 类?
    我们公司用了6 年的分布式锁,很是厉害!
    Google 开源的依赖注入库,比 Spring 更小更快!
  • 原文地址:https://www.cnblogs.com/Prinlily/p/9856252.html
Copyright © 2011-2022 走看看