zoukankan      html  css  js  c++  java
  • 文件处理函数

    一、文件的创建与删除

      touch($filename ,$time ,$atime):文件名为$filename的文件不存在时,新建该文件;文件存在时,函数可改变该文件的修改时间;成功返回true,失败返回false

        $time:可选参数,将文件的修改时间设定为$time,如果未使用该参数则默认使用当前系统的时间

        $atime:可选参数,将文件的访问时间设为$atime,如果未指定该参数则使用$time参数值,若二者均未指定,则默认使用当前系统时间

      tmpfile():以读写模式创建一个具有唯一文件名的临时文件,文件创建后即为打开状态可直接进行内容读写,文件会在脚本结束或fclose()关闭后自动删除,创建成功返回文件句柄,失败返回false

      tempnam($dir ,$prefix):在指定目录中创建一个具有唯一文件名的临时文件,创建完成后须使用fopen()打开该文件才可进行内容读写,文件不会自动删除须使用unlink()手动删除该文件,若指定目录不存在,会在系统的临时文件下生成该临时文件,创建成功返回新的临时文件名,失败返回false

        $prefix:用于产生的该临时文件的前缀字符串,系统仅会取该段字符中的前3个字符作为前缀字符

      unlink($filename):删除文件,成功返回true,失败返回false

    二、文件的打开、关闭、锁定

      fopen($filename ,$mode):打开本地文件或远程URL文件,成功返回文件指针资源,失败返回false

        $mode:指定对文件的访问类型,包括:

          "r":只读方式打开,将文件指针指向文件头

          "r+":读写方式打开,将文件指针指向文件头

          "w":写入方式打开,将文件指针指向文件头并将文件内容清空覆盖写入,若文件不存在则创建之

          "w+":读写方式打开,将文件指针指向文件头并将文件内容清空覆盖写入,若文件不存在则创建之

          "a":写入方式打开,将文件指针指向文件末尾接着已有内容后面写入,若文件不存在则创建之

          "a+":读写方式打开,将文件指针指向文件末尾接着已有内容后面写入,若文件不存在则创建之

          "x":创建并以写入方式打开,将文件指针指向文件头,若文件已存在则fopen()调用失败并返回false,文件不存在则创建之

          "x+":创建并以读写方式打开,其他行为和"x"一样

        若打开的是二进制文件,则参数$mode要加上"b"

          例:

            $filename="c:\files\demo.gif";

            $handle=fopen($filename,"rb");

      fclose($handle):关闭已打开的文件指针,成功返回true,失败返回false

      popen($command ,$mode):打开指向进程的管道,该进程由$command给定的command命令执行而产生,成功返回文件指针资源,失败返回false

        $mode:同函数fopen()的$mode参数

        例:

          $handle=popen("/bin/ls","r");

      pclose($handle):关闭用popen()打开的指向管道的文件指针,成功返回进程的终止状态,失败返回-1

      flock($handle ,$option):对文件进行加锁、解锁,文件资源句柄关闭或脚本结束后不会自动解锁,必须手动解锁,执行成功返回true,失败返回false

        $option:可用以下值以“|”组合使用:

          LOCK_SH:取得共享锁定(读取的程序)

          LOCK_EX:取得独占锁定(写入的程序)

          LOCK_UN:释放锁定(无论共享或独占)

          若不希望flock()在锁定时堵塞,用LOCK_NB

    三、文件的复制与移动

      copy($path ,$newPath):拷贝文件,将文件从原路径$path复制到$newPath,如果目标路径下同名文件已存在则会被覆盖,成功返回true,失败返回false

      rename($old ,$new):重命名文件或文件的路径,可利用该函数将文件移动到另一路径下,成功返回true,失败返回false

      move_uploaded_file($filename ,$path):将上传的文件移动到新位置,本函数检查并确保文件$filename是通过HTTP POST上传机制上传的合法文件,若文件合法则将其移动到指定的路径$path下,成功返回true;若文件不是合法上传的,则不进行操作并返回false,若文件为合法上传但由于某些原因无法移动,也返回false

    四、文件内容的写入、输出

      fwrite($handle ,$str ,$length):写入文件内容,将字符串$str的内容写入文件指针$handle处,成功返回写入的字符数,失败返回false(可用于二进制文件)

        $length:可选参数,当写入了$length个字节或写完了$str后,写入就会停止

        例:

          $filename="./demo.txt";

          $handle=fopen($filename,"a");

          fwrite($handle,"要添加到文件中的内容");

          fclose($handle);

      fputs($handle ,$str):写入文件内容,fwrite()函数的别名

      fread($handle ,$length):读取文件内容,从当前文件指针所在位置读取最多$length个字节,成功返回读取到的内容字符串,失败返回false(可用于二进制文件)

        例:

          $filename="/usr/local/something.txt";

          $handle=fopen($filename,"r");

          $contents=fread($handle,filesize($filename));

          fclose($handle);

        若读取的内容为远程URL文件或popen()打开的进程文件返回的流,读取会在一个包可用之后停止,应将每段数据收集起来合并成块:

          $handle=fopen("http://www.example.com/","rb");

          $contents='';

          while(!feof($handle)){

            $contents.=fread($handle,8192);

          }

          fclose($handle);

      file_put_contents($filename ,$data ,$flags):将数据写入到文件中,功能和依次调用fopen()、fwrite()、fclose()写入一样,若文件不存在则在指定的文件路径下创建该名称文件,成功则返回写入到文件中的字节数,失败返回false

        $data:指定要写入的数据,类型可以为string、array(不能为多维数组)或stream资源

        $flags:可选参数,以下值可用“|”组合使用:

          FILE_USE_INCLUDE_PATH:在include目录中搜索$filename

          FILE_APPEND:如果文件$filename已存在,追加写入数据而不是覆盖

          LOCK_EX:在写入时获得一个独占锁

      file_get_contents($filename):获得文件中的内容,以字符串形式返回,文件$filename须已存在,功能类似函数file(),但首选file_get_contents(),失败时返回false

        若要指定开始读取的偏移量位置以及读取的最大长度:file_get_contents($filename ,NULL ,NULL ,$offset ,$maxlen)

      file($filename ,$flags):将文件内容输出到一个数组中,返回的数组中的每个元素对应于文件中的一行,且附加了换行符,失败则返回false

        $flags:可选参数,以下值可用“|”组合使用:

          FILE_USE_INCLUDE_PATH:在include_path中查找文件

          FILE_IGNORE_NEW_LINES:在数组的每个元素的末尾不要添加换行符

          FILE_SKIP_EMPTY_LINES:跳过空行

      fscanf($handle ,$format):将文件中的内容格式化输出,每调用一次函数fscanf()会从文件中读取一行,成功则以数组形式返回解析后的内容,失败返回false

        $format:与函数sprintf()中的数据类型格式参数相同,同C语言下的数据占位符

          %%:返回一个百分号 %

          %b:二进制数

          %c:字符类型

          %d:包含正负号的十进制整型

          %e:使用小写的科学计数法(103

          %E:使用大写的科学计数法(103

          %u:不包含正负号的十进制数无符号整型

          %f:浮点数(本地设置)

          %F:浮点数(非本地设置)

          %g:较短的 %e 和 %f(不保留无效的0)

          %G:较短的 %E 和 %f(不保留无效的0)

          %o:八进制数

          %s:字符串

          %x:十六进制数(小写字母)

          %X:十六进制数(大写字母)

        例:

          $handle=fopen("users.txt","r");
          while($userinfo=fscanf($handle,"%s %s %s ")){
              list($name,$profession,$countrycode)=$userinfo;
                 //... do something with the values
          }
          fclose($handle);

      readfile($filename):将给定的文件的内容写到输出缓冲区,成功则返回从文件中读取并写到输出缓冲区的字符数,失败返回false

      fpassthru($handle):将给定的文件指针从当前位置到EOF的内容写到输出缓冲区,成功则返回读取并写到输出缓冲区的字符数,失败返回false

        若要输出已有数据的文件中的全部数据,须调用函数rewind()将文件指针指向文件头;若既不需要修改文件也不在特定位置检索,只想将文件全部内容输出到缓冲区,应该使用函数readfile();

      fflush($handle):将缓冲区的内容写入到文件中,成功返回true,失败返回false

    五、文件内指针操作

      fseek($handle ,$offset ,SEEK_SET):设置文件指针的位置,新位置从文件头开始以字节数度量,成功返回0,失败返回-1

        $offset:位置偏移量;若要移动到相对文件尾之前的位置,须将该参数设为负值,并设置第三个参数为SEEK_END

        SEEK_SET:可选参数,默认值,设定位置等于$offset字节,其他值包括:

          SEEK_CUR:设定位置为当前位置加上$offset

          SEEK_END:设定位置为文件尾加上$offset

      ftell($handle):返回文件指针的位置,即在文件流中的偏移量,失败返回false

      feof($handle):检测文件指针是否到了文件结束的位置,如果文件指针到了EOF或出错时返回true,其他情况返回false

      rewind($handle):将文件指针重新指向文件头,成功返回true,失败返回false

      fgetc($handle):从文件指针中读取单个字符,每调用一次该函数则返回一个包含有一个字符的字符串,碰到EOF则返回false,但返回的值可能为读取到的“0”或“false”,故在循环判断时应使用“===”

      fgets($handle ,$length):从文件指针中读取一行,将该行内容返回为字符串,失败则返回false

        $length:可选参数,读取一行并返回长度最多为$length-1个字节的字符串,在碰到换行符、EOF或已经读取了$length-1个字节时停止,如果未指定该参数,则默认为1K(1024字节)

      fgetss($handle ,$length ,$tags):从文件指针中读取一行并过滤掉HTML和PHP标记,将内容返回为字符串,失败则返回false

        $length:可选参数,读取一行并返回长度最多为$length-1个字节的字符串

        $tags:可选参数,指定哪些标记不被过滤掉

    六、文件属性的获取与修改

      clearstatcache():清除文件属性信息的缓存,当使用以下列出的函数时,PHP将自动缓存这些函数的返回信息以提供更快的性能,但如果文件在脚本执行期间被删除或被修改,此时缓存中的文件信息仍为之前的,即须清除缓存以重新获取即时信息

        受影响的函数包括:

        stat(),lstat(),file_exists(),is_writable(),is_readable(),is_executable(),is_file(),is_dir(),is_link(),

        filectime(),fileatime(),filemtime(),fileinode(),filegroup(),fileowner(),filesize(),filetype(),fileperms()

      stat($filename):获取文件的属性信息,若$filename是符号连接,则返回的属性信息是被连接文件本身的,而不是符号连接;成功则以数组形式返回信息,失败返回false

        返回的数组信息格式:

          数字下标  关联键名      说明

            0                 dev       设备名

            1       ino        inode号码

            2       mode       inode保护模式

            3       nlink        被连接数目

            4       uid        所有者的用户ID

            5       gid           所有者的组ID

            6       rdev         设备类型

            7       size          文件大小的字节数

            8       atime       上次访问时间

            9       mtime       上次修改时间

            10     ctime        上次改变时间

            11     blksize      文件系统IO的块大小

            12     blocks      所占据块的数目

      fstat($handle):获取已打开的文件的属性信息,以数组形式返回信息,与函数stat()一样,但仅作用于已打开的文件而不是文件名

      fileatime($filename):返回文件上次被访问的时间,时间以Unix时间戳的方式返回,失败返回false

      filectime($filename):返回文件被创建的时间,时间以Unix时间戳的方式返回,失败返回false

      filemtime($filename):返回文件上次被修改的时间,时间以Unix时间戳的方式返回,失败返回false

      fileowner($filename):返回文件所有者的用户ID,用户ID以数字格式返回,用函数posix_getpwuid()来将其解析为用户名,失败返回false

      filegroup($filename):返回文件所属组的ID,组ID以数字格式返回,用函数posix_getgrgid()来将其解析为组名,失败返回false

      fileperms($filename):返回文件的权限模式,以数字模式返回

      filesize($filename):返回文件大小的字节数,失败返回false

      filetype($filename):返回文件类型,参数必须为路径加文件名,不能仅为单独的文件名;返回的字符串包括:fifo、char、dir、block、link、file、unknown,失败返回false

      chown($filename ,$user):改变文件的所有者,将文件$filename的所有者改成指定的用户名或用户ID,只有超级用户可以改变文件的所有者,成功返回true,失败返回false

      chgrp($filename ,$group):改变文件所属的组,将文件$filename所属的组改成指定的组名或组ID,只有超级用户可以任意修改文件所在的组,其他用户只能将文件的组改成自己所在的组,成功返回true,失败返回false

      chmod($filename ,$mode):改变文件的权限模式,成功返回true,失败返回false

        $mode:该参数由4个数字组成,第一个数字永远是0,第二个数字规定所有者的权限,第三个数字规定所有者所在组的权限,第四个数字规定其他所有人的权限

          1-执行权限,2-写权限,4-读权限  如需设置多个权限,对这三个数字相加

        例:

          chmod("test.txt",0600);  //仅所有者可读可写,其他人无任何权限

          chmod("test.txt",0644);  //所有者可读可写,所有者所在组仅可读,其他所有人也仅可读

          chmod("test.txt",0750);  //所有者拥有所有权限,所有者所在组可执行、可读,其他所有人无任何权限

      ftruncate($handle ,$size):将文件大小截为$size,成功返回true,失败返回false

    七、对文件的判断

      file_exists($filename):检查文件或目录是否存在,存在返回true,否则返回false

      is_dir($filename):判断给定文件名是否是一个目录,如果文件名存在且是个目录,返回true,否则返回false

      is_file($filename):判断给定文件名是否为一个正常的文件,如果文件存在且为正常的文件则返回true,否则返回false

      is_link($filename):判断给定文件名是否为一个符号连接,如果文件存在且为一个符号连接则返回true,否则返回false

      is_readable($filename):判断给定文件是否可读,如果文件存在且可读则返回true,否则返回false

      is_writable($filename):判断给定文件是否可写,如果文件存在且可写则返回true,否则返回false

      is_executable($filename):判断文件是否可执行,如果文件存在且可执行则返回true,否则返回false

      is_uploaded_file($filename):判断文件是否是通过HTTP POST上传的,如果是则返回true,否则返回false

      getimagesize($filename):可用于检测一个文件是否真正是图片类型,若不是则返回false,若是则以索引数组的形式返回图像信息,数组共4个元素,索引0包含图像宽度的像素值,索引1包含图像高度的像素值,索引2是图像的扩展名标识,索引3是内容为“height=" " width=" "”的字符串

    八、文件名与路径目录

      basename($path [,".后缀"]):返回文件全路径字符串中的文件名部分,如果指定第二个后缀参数,那么返回的文件名不包含“.”及后缀字符

      dirname($path):返回文件全路径字符串中的目录部分

        $path:若字符串$path中没有斜线,则返回点“.”表示在当前目录;否则返回去掉最后一个斜线及其后内容的字符串

        例:

          echo dirname("F:/phpEnv/php/index.php");  //F:/phpEnv/php

      pathinfo($path ,$options):返回路径下文件的信息,若指定了参数$options则返回对应信息的字符串,未指定则返回关联数组

        $options:可选参数,包含PATHINFO_DIRNAME、PATHINFO_BASENAME、PATHINFO_EXTENSION、PATHINFO_FILENAME

        例:

          $path_parts=pathinfo('/www/htdocs/inc/lib.inc.php');

          echo  $path_parts [ 'dirname' ],  " " ;

          echo  $path_parts [ 'basename' ],  " " ;

          echo  $path_parts [ 'extension' ],  " " ;

          echo  $path_parts [ 'filename' ],  " " ;

      realpath($path):将相对路径转为绝对路径,返回绝对路径字符串,失败或文件不存在时返回false

        例:echo realpath("./1.php");

      fnmatch("含通配符的匹配字段" ,$str):检查传入的字符串$str是否与指定的含通配符的匹配字段相匹配,此函数对于文件名尤其有用,但也可用于普通字符串,匹配则返回true,否则返回false

        例:

          if ( fnmatch ( "*.txt",$filename)) {
          }

      glob("含通配符的匹配字段" ,$flags):查询与设定的含通配符的匹配字段相匹配的文件路径,返回一个包含有匹配文件/目录的数组,失败返回false

        $flags:可选参数,包括:

          GLOB_MARK:在每个返回的项目中加一个斜线

          GLOB_NOSORT:按照文件在目录中出现的原始顺序返回(不排序)

          GLOB_NOCHECK:如果没有文件匹配则返回用于搜索的模式

          GLOB_NOESCAPE:反斜线不转义元字符

          GLOB_BRACE:扩充 {a,b,c} 来匹配 'a','b' 或 'c'

          GLOB_ONLYDIR:仅返回与模式匹配的目录项

          GLOB_ERR:停止并读取错误信息(比如说不可读的目录),默认的情况下忽略所有错误

        例:

          foreach(glob("*.txt") as $filename){

            echo  "$filename"."size--".filesize($filename)." ";

          }

    九、目录的操作

      mkdir($path ,$mode ,false):新建路径目录,成功返回true,失败返回false

        $mode:可选参数,默认值为0777,表示所有用户最大访问权(可读可写可执行),该参数在Windows下被忽略

        false:可选参数,默认值,仅供创建单级目录,若要创建多级目录则该参数必须为 true

        例:

          mkdir("./demo/");  //在同路径下创建一个名为demo的目录文件夹

          mkdir("./autumn/test/demo",0777,true); 

          //在同路径下创建名为autumn的目录文件夹,在该文件夹下为test文件夹,在test文件夹中为demo文件夹

      rmdir($dirname):删除目录,该目录必须是空的且要有相应的权限,成功返回true,失败返回false

      rename($old ,$new):重命名目录名,可利用该函数将目录移动到另一路径下,成功返回true,失败返回false

      opendir($path):打开目录路径,用于之后的readdir()、rewinddir()、closedir()调用,打开成功返回目录句柄,失败返回false

      readdir($dirhandle):返回目录中的文件名,失败返回false

        例:

          if($dirhandle=opendir('/path/to/files')){

            while(false!==($file=readdir($dirhandle))){

              echo  " $file " ;

            }

            closedir($dirhandle);

          }

      scandir($dir ,$order):列出指定路径中的文件和目录,以索引数组的形式返回,失败返回false

        $order:可选参数,默认为按字母升序排序,设置该参数为1则按字母降序排序

        例:

          $dir='/tmp';

          $files1=scandir($dir);

          $files2=scandir($dir,1);

          print_r($files1);

          print_r($files2);

      closedir($dirhandle):关闭opendir()打开的目录句柄

      disk_free_space($str):返回系统目录或磁盘分区的可用空间,成功则返回可用字节的浮点数,失败返回false

      disk_total_space($str):返回一个系统目录的磁盘总大小,成功则返回磁盘总大小字节的浮点数,失败返回false

    十、连接

      symlink("连接的目标","连接的名称"):建立符号连接,成功返回true,失败返回false

      lstat($filename):获取符号连接的属性信息,返回的信息结构和函数stat()相同,成功则以数组形式返回信息,失败返回false

      lchgrp($filename ,$group):改变符号连接所属的组,改成指定的组名或组ID,只有超级用户可以任意修改符号连接所在的组,其他用户只能将符号连接的组改成自己所在的组,成功返回true,失败返回false

      lchown($filename ,$user):改变符号连接的所有者,改成指定的用户名或用户ID,只有超级用户可以改变符号连接的所有者,成功返回true,失败返回false

      readlink($path):返回符号连接的路径内容,失败返回false

      link("要连接的目标" ,"连接的名称"):建立一个硬连接,成功返回true,失败返回false

      linkinfo("连接的路径"):获取一个连接的信息,本函数用来验证一个连接是否确实存在,成功返回lstat系统调用所返回的 UNIX C stat 结构中的 st_dev 字段,失败返回0或false

  • 相关阅读:
    Could A New Linux Base For Tablets/Smartphones Succeed In 2017?
    使用libhybris,glibc和bionic共存时的TLS冲突的问题
    6 Open Source Mobile OS Alternatives To Android in 2018
    Using MultiROM
    GPU drivers are written by the GPU IP vendors and they only provide Android drivers
    Jolla Brings Wayland Atop Android GPU Drivers
    How to Use Libhybris and Android GPU Libraries with Mer (Linux) on the Cubieboard
    闲聊Libhybris
    【ARM-Linux开发】wayland和weston的介绍
    Wayland and X.org problem : Why not following the Android Solution ?
  • 原文地址:https://www.cnblogs.com/zhouwanqiu/p/9020080.html
Copyright © 2011-2022 走看看