zoukankan      html  css  js  c++  java
  • PHP 文件的相关操作

    文件的打开和关闭

    主要是两个函数,fopen和fclose。

    fopen ( string $filename , string $mode [, bool $use_include_path = FALSE [, resource $context ]] ) : resource
    

    返回的是资源类型的数据
    mode 打开模式:指的是文件打开是以写入、读取、执行等等方式

    r:(只读模式)以只读方式打开,文件指针指向文件的开头部分
    r+:(读写模式)以读写方式打开,文件指针指向文件的开头

    w:(只写模式)以写方式打开,指针指向文件头部,如果文件不存在,会创建一个新文件,如果文件存在,文件内容会被清空
    w+:(写读模式),指针指向文件头部,如果文件不存在,会创建一个新文件,如果文件存在,文件内容会被清空,可以读取

    a:以追加方式打开,指针指向文件末尾(只写),如果文件不存在,会创建一个新文件
    a+:以追加方式打开,如果文件存在,指针指向文件末尾,(读写)如果文件不存在,会创建一个新文件


    文件的读取

    可以读取单个字符、一行、整个文件、读任意长度的数据。

    1、读取整个文件:

    不需要对文件打开与关闭

    • readfile()
    readfile ( string $filename [, bool $use_include_path = FALSE [, resource $context ]] ) : int
    

    读入一个文件并把它输出(output)到缓存中(buffer) 返回读取文件的字节数,错误则返回false。

    • file()
    file ( string $filename [, int $flags = 0 [, resource $context ]] ) : array
    

    读取整个文件内容到一个数组,数组每个元素对应一行。

    • file_get_contents()
    file_get_contents ( string $filename [, bool $use_include_path = FALSE [, resource $context [, int $offset = 0 [, int $maxlen ]]]] ) : string
    

    将文件读入到一个字符串中,从 offset 开始,读取 maxlen 长度。
    该函数适用于二进制对象,是将整个文件内容读取到一个字符串中的首选方式
    It will use memory mapping techniques if supported by your OS to enhance performance.

    2、读取一行:

    • fgets() 读取一行数据
    fgets ( resource $handle [, int $length ] ) : string
    

    在读取指定长度 length 或碰到新行或碰到 EOF 时结束。

    • fgetss()
    fgetss ( resource $handle [, int $length [, string $allowable_tags ]] ) : string
    

    是fgets()的变体,用于读取一行数据,不过 会过滤掉被读取内容的html和php标记,效果同strip_tags()

    PHP 7.3.0 中,已被废弃,不推荐使用。

    3、读取单个字符:

    fgetc()

    fgetc ( resource $handle ) : string
    

    在对某一个字符进行查找、替换时,需要有针对性的对某个字符进行读取,那么我们就可以使用fgetc来实现

    4、读取任意长度的字符:

    fread()

    fread ( resource $handle , int $length ) : string
    

    读取汉字时,根据汉字的字节数避免出现乱码


    文件的写入

    • fwrite()
    • fputs()
    • file_put_contents(filename,$str)
      不需要打开关闭
      相当于 fopen("","ww+")->fwrite()->fclose()
      第三个参数(FILE_APPEND)可以实现追加功能

    文件的其他操作

    • 复制 copy
    copy ( string $source , string $dest [, resource $context ] ) : bool
    
    • 重命名 rename
      文件或文件夹,可实现剪切功能
    rename ( string $oldname , string $newname [, resource $context ] ) : bool
    
    • 删除文件 unlink
    unlink ( string $filename [, resource $context ] ) : bool
    
    • 获取文件的大小 filesize
    filesize ( string $filename ) : int
    
    • 获取文件的绝对路径 realpath
    realpath ( string $path ) : string
    

    返回文件的绝对路径(盘符绝对路径)

    • 获取文件的相关信息 stat
      stat("filename")
      返回一个数组,数组元素是文件的相关信息,包括文件大小、最后的修改时间等
    • 判断是否可写 is_writeable
    • 判断是否可读 is_readable
    • 判断是否是个文件 is_file
    • 判断某个文件或者目录是否存在 file_exists
    • 文件最后一次被访问的时间 fileatime
      last access
    • 文件最后一次修改的时间 filemtime
      modification

    文件指针的操作

    PHP可以实现文件指针的定位和查询,从而实现所需信息的查询,文件指针有四个函数
    rewind feof ftell fseek

    • rewind(资源类型):重置指针的位置
    • ftell(资源类型):返回文件读写指针所在的位置,整型值
    • feof(资源类型):该函数判断文件指针是否指向文件末尾
    • fseek() 位移 距离
    fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] ) : int
    

    whence 可能的值
    SEEK_SET - Set position equal to offset bytes.
    SEEK_CUR - Set position to current location plus offset.
    SEEK_END - Set position to end-of-file plus offset.


    文件锁 flock

    在向一个文件写入内容时,需要先将文件锁定,以防止其他用户同时修改该文件。

    flock ( resource $handle , int $operation [, int &$wouldblock ] ) : bool
    

    operation
    LOCK_SH: 取得共享锁
    LOCK_EX: 取得独占锁 exclusive 排外
    LOCK_UN: 释放锁定
    LOCK_NB: 防止flock()在锁定的时候堵塞 (防止多人同时锁定一个文件)


    远程文件读取

    在PHP中支持URL格式的文件的调用
    在php.ini中开启 allow_url_fopen = On

    //readfile(文件地址):将文件内容读取到内存中

    数据流(输出流):内存输出到屏幕的数据流
    ob_start(): 开启输出流

    ob_get_contents():得到输出流中缓冲的内容

    ob_clean:关闭输出流
    可以用来读取网络上的图片


  • 相关阅读:
    dedecms图片列表效果调用
    ThinkPHP 中M方法和D方法的具体区别
    在线更新dede程序后 网站出现错误 DedeCMS Error:Tag disabled:"php" more...!
    Form元素示例
    PHP使用frameset制作后台界面时,怎样实现通过操作左边框架,使右边框架中的页面跳转?
    删除UTF-8 BOM头的GUI小工具
    解决 ultraedit 菜单字体模糊
    git使用及一些配置、问题
    shell之基本语法
    shell之iptables
  • 原文地址:https://www.cnblogs.com/jiaoran/p/12774320.html
Copyright © 2011-2022 走看看