您好,欢迎访问三七文档
12.1目录操作目录是存放文件的载体,通常特定的文件类型都需要存放在专门的目录中。而目录操作也是文件操作的一项重要内容,本节就先来介绍PHP中对目录进行操作的相关内容,包括目录的创建、删除、读取等等。12.1.1创建目录在PHP中,实现创建目录的功能,可以通过其内置函数:mkdir()来实现。该函数的语法格式如以下代码所示:boolmkdir(string$pathname[,int$mode[,bool$recursive[,resource$context]]])以上代码中参数$pathname为指定的路径及目录名称,该参数为必选参数;可选参数$mode,指定创建目录的模式,指定目录的读写权限,不过该参数仅在类UNIX系统下起作用,在Windows系统下将被忽略;可选参数$recursive为一个布尔型变量,指定是否设置回归模式;可选参数$context为指定需要处理的目录的一组内容选项,该参数仅在PHP5以上版本中支持。执行函数将会创建一个指定路径指定名称的目录,如果创建失败,函数将会返回FALSE。导致创建失败的原因可以是:没有权限、已经存在同名目录等。12.1.2删除目录目录在创建之后,出于简化系统的目录,需要将不再需要的目录进行删除。在PHP中要删除一个存在的目录可以通过函数rmdir()来实现,该函数的语法格式如以下代码所示:boolrmdir(string$dirname)以上代码中参数$dirname为指定的需要进行删除的目录名称,以字符串表示。执行该函数将删除指定的目录,如果删除失败,函数将会返回FALSE。12.1.3打开目录要读取一个目录中的内容,首先要打开目录句柄。使用函数opendir()函即可打开一个目录句柄,其语法格式如下所示:resourceopendir(string$path[,resource$context])以上代码中参数$path为指定的需要进行打开的目录的路径与目录名,以字符串表示;参数$context为对文件流进行修饰的文本。执行该代码将会打开指定的目录并返回一个句柄以便对其进行读取以及关闭等后续的操作。关于该函数的实例,将在下一小节介绍浏览目录内容中详细说明。12.1.4浏览目录内容目录在使用opendir()打开后,就可以进行浏览目录内容的操作了。使用readdir()函数可以读取目录内的内容,其语法格式如以下代码所示。stringreaddir(resource$dir_handle)以上代码中参数$dir_handle为使用opendir()打开的目录句柄,执行该函数将会以字符串形式返回目录中下一个文件的文件名,其中文件名以在文件系统中的排序返回。12.1.5倒回目录已经打开的目录句柄经过readdir()函数进行读取后,句柄将会指到目录中的最后一个文件。如果需要再次对目录进行读操作,则因句柄已经到达最后而无法进行,此时可以通过函数rewinddir()函数将句柄重新指向目录的开头。该函数的语法格式如以下代码所示:voidrewinddir(resource$dir_handle)以上代码中参数$dir_handle为使用opendir()打开的目录句柄。执行函数将会重置目录句柄将其指向目录的第一个文件。12.1.6关闭打开目录目录在使用opendir()函数打开之后,其返回的目录句柄将一直占据相应的内存空间。为了节省内存资源在不再使用该资源时应该将其释放。使用closedir()函数可以关闭打开的目录句柄以释放其占用的内存空间。关于该函数在前面介绍浏览目录内容以及倒回目录操作时都已经有所涉及,这里不再赘述。12.1.7判断文件是否为目录在实际编程过程中,有时需要判断指定名称的的文件是否为目录。使用函数is_dir()可以判断给定的文件是否为目录,该函数的语法格式如以下代码所示:boolis_dir(string$filename)以上代码中参数$filename为指定需要进行判断的文件名,以字符串表示。执行该函数如果文件名存在并且为目录则返回TRUE,反之则返回FALSE。如果$filename是一个相对路径,则按照当前工作目录检查其相对路径。12.1.7判断文件是否为目录12.1.8返回分区占用磁盘空间使用函数:disk_total_space()可以根据相应的文件系统或者磁盘分区返回所有的字节数,其语法格式如下所示:floatdisk_total_space(string$directory)以上代码中参数$directory为指定的目录或者路径,函数将根据其占用空间的大小返回相应的浮点数值,其单位为字节。12.1.9返回目录磁盘可用空间使用函数:disk_free_space()可以根据相应的文件系统或者磁盘分区返回所有可用的字节数,其语法格式如下所示:floatdisk_free_space(string$directory)以上代码中参数$directory为指定的目录或者路径,函数将根据其空闲空间的大小返回相应的浮点数值,其单位为字节。12.2文件操作上一节为读者介绍了目录的操作,这一节继续来介绍文件操作。内容包括文件判断、打开文件、文件读写,以及复制文件、重命名文件和删除文件等常规操作。如果上一节的目录的操作是构建文件管理系统的框架,那么这一节的文件操作就是赋予系统具体的文件管理的功能了。12.2.1判断文件是否存在在使用一个文件前,需要先判断文件是否存在。使用file_exists()函数即可完成该判断,该函数的语法格式如下所示:boolfile_exists(string$filename)以上代码中,参数$filename为指定的需要进行判断的文件名,以字符串表示。执行函数将会根据指定文件是否存在返回相应的布尔值,如果文件存在则返回TRUE,反之则返回FALSE。该函数不仅可以判断文件也可以用于对目录的判断。12.2.1判断文件是否存在12.2.2打开文件与目录一样,要对一个文件进行读写操作,首先需要打开文件句柄。使用fopen()即可打开指定的文件,为后续的读写操作做准备。该函数的语法格式如以下代码所示:resourcefopen(string$filename,string$mode[,bool$use_include_path[,resource$zcontext]])以上代码中参数$filename为指定的需要进行打开的文件名,以字符串表示;参数$mode为指定的打开模式,可用的打开模式如表12.1所示。可选参数$use_include_path指定如果当前目录中不存在指定文件是否要使用include_path,默认为FALSE;可选参数$context为一个变量的设置和包装的特别设置,该参数将限定或者增加数据流的行为。12.2.3关闭打开文件文件在使用fopen()打开后,将被返回一个文件操作句柄,该操作句柄将占用一定的内存空间。所以如果在不再需要对该文件进行操作时,出于节省系统资源的考虑应该释放该内存空间。使用函数fclose()可以关闭文件句柄,以释放其占用的内存空间。该函数语法格式如以下代码所示:boolfclose(resource$handle)以上代码中的参数$handle为有效的使用fopen()打开的文件操作句柄。执行该函数将会把handle指向的文件关闭。如果成功则返回TRUE,失败则返回FALSE。由于该函数使用相对简单,而且关于该函数的使用将在后面读写文件时有所涉及,这里就不再单独举例说明。12.2.4按字符读取文件前几小节介绍了文件操作的准备工作,从本节开始进入正式的对文件进行读写操作的实质性内容。本小节先来看如何按字符读取文件内容。在PHP中可以通过函数fgetc()来实现按字符读取文件内容。该函数的语法格式如以下代码所示:stringfgetc(resource$handle)以上代码中,参数$handle为使用fopen()打开的文件操作句柄。执行该函数将以字符的形式返回当前文件操作句柄所指代的字符,如果文件句柄已经指向文件末尾则函数将会返回FALSE。12.2.4按字符读取文件12.2.5按行读取文件按字符读取文件内容,在读取时可以将内容精确到单个字符,但实际可能并不需要如此精确低效的读取方式。而PHP中也提供了另一种读取方式——按行读取文件内容。使用该种方式,将会读取文件句柄当前所在行的内容,很明显该种方式会比使用fgetc()更高效。在PHP中该种操作通过函数:fgets()来实现,其语法格式如下所示:stringfgets(resource$handle[,int$length])以上代码中参数$handle为使用fopen()打开的文件操作句柄;可选参数$length为指定每行需要读取的长度,以数值表示。执行该函数将从handle指向的文件中读取一行并返回长度最多为length-1字节的字符串。遇到换行符、EOF(文件已经到末尾)或者已经读取length-1字节后,将停止读取。12.2.6读取文件所有内容前面两小节介绍的按字符读取与按行读取文件,这一节来介绍两个读取文件所有内容的函数:file()与file_get_contents()。与前面介绍的函数不同,这两个函数不需要使用fopen()打开即可读取文件内容,其参数都为存在的文件名。1.将文件读入数组2.将文件读入一个字符串12.2.6读取文件所有内容12.2.7将字符串写入文件前面介绍的都是读取文件的相关内容,这一节来介绍如何向文件中写入内容。使用函数:fwrite()可以将指定字符串写入到文件中,该函数的语法格式如以下代码所示:intfwrite(resource$handle,string$string[,int$length])以上代码中参数$handle为使用fopen()打开的文件操作句柄;参数$string为指定需要写入到文件的字符串;可选参数$length为指定的最大写入的长度,以数值表示,默认为字符串的最大长度。执行该函数,将会把指定长度的字符串写入到文件中,函数返回写入的长度。12.2.7将字符串写入文件12.2.8将指定内容写入文件将字符串写入文件,除了可以除fwrite(),还可以使用file_put_contents()。相比fwrite(),该函数将会更加方便快捷,其语法格式如以下代码所示:intfile_put_contents(string$filename,string$data[,int$flags[,resource$context]])以上代码中参数$filename为指定的需要进行写入操作的文件名;参数$data为指定的要写入的字符串;可选参数$flags可以是FILE_USE_INCLUDE_PATH,FILE_APPEND和/或LOCK_EX(获得一个独占锁定)三个中的一个;可选参数$context为指定的对数据流进行修饰的一个context资源。12.2.8将指定内容写入文件12.2.9倒回文件指针通常文件打开之后,其操作指针将根据打开模式的不同,指向不同的位置。当文件指针指向开头时,使用fgetc()函数或者使用fgets()函数读取文件内容,都会使文件指针的位置发生变化。而通过函数:rewind()即可将文件指针重新指向文件开头,该函数语法格式如以下代码所示:boolrewind(resource$handle)以上代码中参数$handle为使用fopen()打开的文件操作句柄,执行该函数将会重置文件指针并且函数会根据是否成功执行返回相应的布尔值。如果成功执行则返回TRUE,反之则返回FALSE。12.2.9倒回文件指针12.2.10获取文件的大小操作文件时获取文件大小,有时也是很有必要的。比如,文件下载系统中,要向客户准确提供文件的大小信息。使用PHP中的filesize()即可获取文件的大小,该函数的语法格式如以下代码所示:intfilesize(string$filename)以上代码中参数$filename为指定的文件名,函数将会返回文件所占用的字节数,如果出错,函数
本文标题:目录与文件操作文件
链接地址:https://www.777doc.com/doc-3821717 .html