• PHP文件操作 读取与写入


    基本知识:


    PHP文件系统是基于Unix系统的
    文件数据基本类型:二进制数据、文本数据
    文件输入流:数据从源文件到内存的流动
    文件输出流:数据从内存保存到文件的流动

    文件操作函数:

    》》》读《《《


    ==>获取文件流
    fopen(文件相对路径/绝对路径,[文件打开模式]);    成功返回文件流,否则返回false
        [文件打开模式]六种常用打开方式:

        r    只读方式打开    指针在文件头
        r+    读写方式打开    指针在文件头

        a    写入方式打开[追加]    指针在文件尾
        a+    读写方式打开[追加]    指针在文件尾

        w    写入方式打开[创建或清空]    指针在文件头
        w+    读写方式打开[创建或清空]    指针在文件头

        b     只限于windows,二进制模式,附加在其他模式的上,例如”xb”
        t     只限于windows,附加在其他模式上,,将所有行的结束符转换成

    ==>根据文件流获取文件信息
    fstat(文件流);    返回文件信息
    返回的数组部分信息:
    ['size']:文件大小
    ['atime']:最后访问时间   返回的是Unix时间戳 转换date('Y-m-d H:i:s',$fileStream['mtime']);
    ['mtime']:最后修改时间
    ['ctime']:最后改变时间(相当于创建时间,只要所有者或用户组没有变化)

    ==>关闭文件
    fclose($fileStream);

    ==>根据路径获取文件信息(方法二):可以不用打开文件就可以获取文件信息
    filesize($filePath);
    fileatime($filePath);
    filemtime($filePath);
    filectime($filePath);

    ==>判断文件是否存在
    file_exists($filePath);

    ==>读取文件内容(方法一)
    $fileData = fread($fileStream,filesize($filePath));
    注意:
    文本文件读取到网页上显示时,由于换行符不被解释,文本不换行显示,
    解决办法:将 替换为<br/>[str_replace(' ','<br/>',$fileData);]

    ==>读取文件内容(方法二)
    file_get_contents($filePath); 将整个文件读取到一个字符串(内部自动关闭文件流)


    ==>读取文件内容(方法三) 循环读取,用于读取大文件
    循环读取指定字节大小的文件数据
    feof($fileStream):判断文件指针是否在文件未尾,是返回true,否则返回false
    while(!feof($fileStream)){
        $fileData = fread($fileStream,1024);
        echo $fileData;
    }

    应用扩展:
    编写配置文本文件 db.ini
    内容:
        host=172.0.0.1
        uid=root
        pwd=1314
        dbname=test
    parse_ini_file('db.ini'); 根据‘=’分隔后的一个数组


    ======================================

    fopen('htttp://demo.php/','r');
    可以读取远程文件,但只限于只读模式
    成功返回文件流,否则返回false

    fread($handle,$len);            读取文件的len个字符长度可
    stream_get_contents($handle);     读取文件所有内容


    fwrite(fileStream,rContent,[length])
    Note: 在区分二进制文件和文本文件的系统上(如 Windows) 打开文件时,fopen() 函数的 mode 参数要加上 'b'。
    成功返回写入的字符数,出现错误时则返回 FALSE 。


    fclose(fileStream)


    例:
    $filename = "/usr/local/something.txt";
    $handle = fopen($filename, "rb");
    $contents = fread($handle, filesize ($filename));
    fclose($handle);

    ftruncate($hanle,$len); 截取文件内容

    》》》写《《《

    ==>写入文件(方法一)
    $fileStream = fopen(filePath,"a+"); 给文件末尾追加内容用a+
    fwrite($fileStream,"要写入的内容");  返回写入的字符数,出现错误时则返回 FALSE 。

    ==>写入文件(方法二)
    file_put_contents($filePath,"要写入的内容",FILE_APPEND);
    内部会自动关闭文件流,FILE_APPEND以追加方式添加,如果没有则默认是对内容清空再写入
    如果是循环写入,效率没有第一种高

    》》》拷贝《《《
    copy(源路径,结果路径);
    注意:中文的编码转换 iconv('utf-8','gb2312',$filePath);

  • 相关阅读:
    java web使用WebSocket
    solr的使用
    mybatis中模糊查询的实现方式
    Java反射的简单使用
    TCP/IP协议 资料整理
    Java单向链表的实现
    Spring boot使用JWT来做接口登录验证
    sql性能优化
    前端实践项目(四)使用koa搭建开发环境
    前端实践项目 目录
  • 原文地址:https://www.cnblogs.com/lt-style/p/3511469.html
Copyright © 2020-2023  润新知