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:\Users\lenovo\Desktop");    //输出:dir

      echo filetype("C:\Users\lenovo\Desktop/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:\Users\lenovo\Desktop/test.txt";
        echo basename($path);     //输出:test.txt

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

    3.1.2 dirname()

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

      语法:striing dirname(string path)

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

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

      示例代码:

        $path = "C:\Users\lenovo\Desktop/test.txt";
        echo dirname($path);        //输出:C:\Users\lenovo\Desktop

    3.1.3 pathinfo()

      作用:返回路径信息

      语法:pathinfo(path,options)

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

      示例代码:

        $path = "C:\Users\lenovo\Desktop/test.txt";
        var_dump(pathinfo($path));

        //输出:array

              ‘dirname‘ => string ‘C:\Users\lenovo\Desktop‘ (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:\Users\lenovo\Desktop‘;
      $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

  

时间: 2024-10-14 16:30:22

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

总结文件操作函数-目录(三)-C语言

获取.改变当前目录: 原型为: #include <unistd.h>   //头文件 char *getcwd(char *buf, size_t size); //获取当前目录,相当于pwd命令 int chdir(const char *path); //修改当前目录,即切换目录,相当于cd命令 其中getcwd()函数:将当前的工作目录绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小. 在调用此函数时,buf所指的内存空间要足够大,若工作目录绝对路径的字符串长度超

第34课 缓冲区操作和目录操作

1. 缓冲区操作 (1)Qt中缓冲区的概念 ①缓冲区的本质为一段连续的存储空间 ②QBuffer是Qt是缓冲区相关的类 ③在Qt中可以将缓冲区看作一种特殊的IO设备 ④文件流辅助类可以直接用于操作缓冲区 (2)QBuffer缓冲区的使用方式 QByteArray array; QBuffer buffer(&array);//缓冲区操作类 if (buffer.open(QIODevice::WriteOnly)) { QDataStream out(&buffer); //文件辅助类可以

说说Python 中的文件操作 和 目录操作

我们知道,文件名.目录名和链接名都是用一个字符串作为其标识符的,但是给我们一个标识符,我们该如何确定它所指的到底是常规文件文件名.目录名还是链接名呢?这时,我们可以使用os.path模块提供的isfile函数.isdir函数和islink函数来达成我们的目标,如下所示: print myfile, ’是一个’, if os.path.isfile(myfile): print ’plain file’ if os.path.isdir(myfile): print ’directory’ if

【1】C#文件操作之目录操作

命名空间:Sytem.IO Directory类下的静态方法: 一.创建目录 Directory.CreateDirectory(string fileName); 二.

R语言文件相关的操作

1. 文件系统介绍 R语言对文件系统的操作,包括文件操作和目录操作,函数API都定义在base包中. 2. 目录操作 2.1 查看目录 查看当前目录下的子目录. # 启动R程序 ~ R # 当前的目录 > getwd() [1] "/home/conan/R/fs" # 查看当前目录的子目录 > list.dirs() [1] "." "./tmp" 查看当前目录的子目录和文件. > dir() [1] "readme

R8&mdash;批量生成文件夹,批量读取文件夹名称+R文件管理系统操作函数

一. 批量生成文件夹,批量读取文件夹名称 今日,工作中遇到这样一个问题:boss给我们提供了200多家公司的ID代码(如6007.7920等),需要根据这些ID号去搜索下载新闻,从而将下载到的新闻存到以公司ID生成的指定文件夹下!所以第一个问题就是200多个公司,不可能每一次下载,都要去点击:新建文件夹,然后对文件夹命名,too boring and monotonous.嘿嘿,幸好有R的陪伴! let's do it,来看看R如何完成这些工作! 主要用到两个函数 一. dir.create-生

目录操作

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #region 目录操作         /// <summary>         ///  目录操作         /// </summary>         /// <param name="sender"></param>         /// &l

【C语言】 字符串操作函数及内存拷贝函数归总

今天在这里把零散的一些常用的字符串操作函数和内存拷贝函数进行一下归总实现. 一 . 字符串操作函数 字符串操作函数有很多,这里我列举一些常用的函数,以及自实现的代码: 字符串拷贝函数: 函数原型: char* my_strcpy(char* dst,const char* src) strcpy(): char* my_strcpy(char* dst,const char* src) {     assert(dst);     assert(src);     char *ret = dst

内存操作函数memmove,memcpy,memset

通过字符串的学习,我们知道字符串操作函数的操作对象是字符串,并且它的结束标志是结束符\0,当然这个说的是不 受限制的字符串函数.然而当我们想要将一段内存的数据复制到另一块内存时,我们不能使用字符串操作函数,当然也 不能一个一个复制,所以就引入了内存操作函数. memcpy函数原型: void *memcpy(void *dst, const void *src, size_t size);将一块内存的数据复制到另一块内存.当两块内存重叠              的时候,memcpy就不能保证拷