• PHP文件相关的操作函数——目录操作


    1.有关文件类型的函数

      PHP是以UNIX的文件系统为模型的,因此在Windows系统中我们只能获得“file”、“dir”或者“unknown”三种文件类型。而在UNIX系统中,我们可以获得“block”、“char”、“dir”、“fifo”、“file”、“link”和“unknown”7种类型。

      1.1 filetype()

        作用:获取文件的上传类型

        语法:filetype(filename)

        参数:该函数接受一个文件名作为参数,如果文件不存在将返回FALSE。

        代码示例:

          echo filetype("C:UserslenovoDesktop");    //输出:dir

          echo filetype("C:UserslenovoDesktop/test.txt"); //输出:file

      1.2 is_file():判断给定的文件名是否为一个正常的文件。如果是返回true,否则返回false

        is_dir():判定给定的文件名是否是一个目录,返回结果同上

        is_link():判定给定的文件名是否为一个符号链接,返回结果同上。

    2.与文件属性相关的函数

      2.1 file_exists()

        作用:检查文件或目录是否存在

        参数:文件名

        返回值:文件存在返回TRUE,不存在返回FALSE

      2.2 filesize()

        作用:获得文件大小

        参数:文件名

        返回值:返回文件大小的字节数,出错返回FALSE

      2.3 is_readable()

        作用:判定给定文件名是否可读

        参数:文件名

        返回值:如果文件存在且可读则返回TRUE

      2.4 is_writable()

        作用:判断给定文件名是否可写

        参数:文件名

        返回值:如果文件存在且可写则返回TRUE

      2.5 is_executable()

        作用:判断给定文件名是否可执行

        参数:文件名

        返回值:如果文件存在且可执行则返回TRUE

      2.6 filectime()

        作用:获取文件的创建时间

        参数:文件名

        返回值:返回UNIX时间戳格式

      2.7 filemtime()

        作用:获取文件的修改时间

        参数:文件名

        返回值:返回UNIX时间戳格式

      2.8 fileatime()

        作用:获取文件的访问时间

        参数:文件名

        返回值:返回UNIX时间戳格式

      2.9 stat()

        作用:获取文件大部分属性值

        参数:文件名

        返回值:返回关于给定文件有用信息的数组

      2.10 clearstatcache()

        以上函数都需要提供同样的字符串参数,即一个指向文件或目录的字符串型变量。PHP将缓存这些函数的返回信息已提供更快的性能。然而在某些情况下,你可能想清除被缓存的信息。例如,如果在一个脚本中多次检查同一个文件,而该文件在此脚本执行期间有被删除或修改的危险时,需要清除文件状态缓存。可以用该函数来清除PHP缓存的该文件信息。clearstatcache()函数缓存特定文件名的信息,因此只在对同一个文件名进行多次操作,并且需要该文件信息不被缓存时才需要调用它。

      2.11 lstat():功能和stat()函数相同,只是该函数只能作用于一个符号链接,而不是普通的文件

      2.12 fstat():功能和stat()函数相同,只是该函数需要一个资源句柄。

    3.与文件目录操作有关的函数

      3.1 解析目录路径

        将目录路径中各个属性分离开通常很有用,如末尾的扩展名、目录部分和基本名。

        3.1.1 basename()

          作用:返回路径中的的文件部分

          语法:string basename(string path[,string suffix])

          参数:该函数给出一个包含有指向一个文件的全路径的字符串,第二个参数是可选参数,规定文件的扩展名。如果提供了则不会输出这个扩展名。

          返回值:本函数返回基本的文件名

          示例代码:

            $path = "C:UserslenovoDesktop/test.txt";
            echo basename($path);     //输出:test.txt

            echo basename($path,".txt");  //输出:test

        3.1.2 dirname()

          作用:返回去掉文件名的目录名

          语法:striing dirname(string path)

          参数:该函数只有一个参数,给出一个包含有指向一个文件的全路径的字符串

          返回值:返回去掉文件名后的目录名

          示例代码:

            $path = "C:UserslenovoDesktop/test.txt";
            echo dirname($path);        //输出:C:UserslenovoDesktop

        3.1.3 pathinfo()

          作用:返回路径信息

          语法:pathinfo(path,options)

          返回值:返回一个关联数组,其中包括指定路径中的目录名、基本名和扩展名三个部分,分别通过数组键dirname、basename和extension来引用。

          示例代码:

            $path = "C:UserslenovoDesktop/test.txt";
            var_dump(pathinfo($path));

            //输出:array

                  'dirname' => string 'C:UserslenovoDesktop' (length=23)

                  'basename' => string 'test.txt' (length=8) '

                  extension' => string 'txt' (length=3) 'filename' => string 'test' (length=4)

      3.2 遍历目录

        取得一个目录下的文件和子目录,就需要用到opendir()函数、readdir()函数、closedir()函数和rewinddir()函数

        3.2.1 opendir():用于打开指定目录,接受一个目录的路径及目录名作为参数,函数返回值为可供其他目录函数使用的目录句柄(资源类型)。如果该目录不存在或者没有访问权限,则返回FALSE

        3.2.2 readdir():用于读取指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数,函数返回当前目录指针位置的一个文件名,并将目录指针向后移动一位。当指针位于目录的结尾时,因为没有文件存在则返回FALSE。

        3.2.3 closedir():关闭指定目录,接受已经用opendir()函数打开的可操作目录句柄作为参数。函数无返回值,运行后将关闭打开的目录。

        3.2.4 rewinddir():倒回目录句柄,接受已经用opendir()函数打开的可操作目录句柄作为参数。将目录指针重置目录到开始处,即倒回目录的开头。

        示例代码:

          $dirname = 'C:UserslenovoDesktop';
          $dir_handle = opendir($dirname);
          while($file = readdir($dir_handle))
          {
              $dirFile = $dirname."/".$file;
              echo $file." ".filesize($dirFile)." ".filetype($dirFile);
              echo "<br>";
          }
          closedir($dir_handle);

      3.3 统计目录大小

        PHP目前没有提供目录总大小的标准函数,因此我们要自定义一个函数来完成这个任务。首先要考虑计算的目录中有没有包含其他子目录的情况,如果没有子目录,目录下的所有文件的大小相加后的总和就是这个目录的大小。如果包含子目录,就按照这个方法再计算一下子目录的大小。使用递归函数最适合此项任务。代码详见P351

      3.4 建立和删除目录

        3.4.1 mkdir()

          该函数用于建立一个新目录,详情访问:http://www.w3school.com.cn/php/func_filesystem_mkdir.asp

        3.4.2 rmdir()

          该函数只能删除一个空目录并且目录必须存在。如果是非空的目录就需要先进入到目录中,使用unlink()函数将目录中的每个文件都删除掉,再回来将这个空目录删除。如果目录中还存在子目录,而且子目录也非空,就要使用递归的方法了。详细代码见P352

      3.5 复制目录

        虽然复制一个目录是文件操作的基本功能。但PHP中也没有给出特定的函数,同样需要自定义一个递归函数实现。要复制一个包含多级子目录的目录,将涉及文件的复制、目录创建等操作,复制一个文件可以通过PHP提供的copy()函数完成,创建目录可以使用mkdir()函数。定义函数时,首先对源目录进行遍历,如果遇到的是普通文件,直接使用copy()函数进行复制。如果遍历是遇到一个目录,则必须建立该目录,然后再对该目录下的文件进行复制操作,如果还有子目录,则使用递归重复操作,最终将整个目录复制完成、自定义的递归函数复制目录代码见P352

      

  • 相关阅读:
    busybox 注意事项
    Implicit vs Explicit Sharing
    Font Creator Program 字库修改合并软件
    Iperf 源代码分析(四)
    QML 中文支持
    file operation
    MFC异常 与C++标准异常
    统一建模语言(UML) 版本 2.0
    MultiByteToWideChar和WideCharToMultiByte用法详解
    UML 基础: 类图
  • 原文地址:https://www.cnblogs.com/xuying/p/4676277.html
Copyright © 2020-2023  润新知