




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、企企 业业 网网 站站 开开 发发php版版讲师:王靖讲师:王靖课课 程程 目目 标标第第9章章 文件系统与操作文件系统与操作9第10章 php交互10第11章 cookie与session11第12章 图像处理12目录与文件目录与文件v第5章讲述了数组的工作原理、访问方法和常用函数。但是数组毕竟是存在于内存中的,不能长久的保存供以后使用,这就要求程序员对数组以及内存中有用的变量进行保存。数据的保存有很多形式,通过这一章的学习,就能找到其中的一种解决方案。在本章中,为了提高大家的动手能力,有些目录或文件并没有建立,我们可以根据系统提示的错误,找到解决的方法。 操作目录操作目录v目录在文件系统中
2、是一个重要的概念,专业的术语把其解释成存储在磁盘上的文件及其他目录的索引,也可以将其视为一个文件夹,在文件夹中,可以放置其他的文件或文件夹,从而使得计算机的文件系统井井有条。最顶层的目录称为根目录,在php中用“/”或“”代表。“.”代表当前目录,“.”代表上级目录。目录操作目录操作 打开目录 关闭目录 读取目录 遍历目录 创建目录 删除目录 判断是否是目录判断是否是目录 v函数函数is_dir()用来判断是否是目录,其语法结构如下:用来判断是否是目录,其语法结构如下:vis_dir($path)v参数参数$path为打开目录的路径,如果文件名存在并且为为打开目录的路径,如果文件名存在并且为目
3、录,则返回目录,则返回 true。如果。如果 file 是一个相对路径,则按是一个相对路径,则按照当前工作目录检查其相对路径。照当前工作目录检查其相对路径。 【范例】利用函数is_dir(),判断images是否是目录。判断是否是目录判断是否是目录 v 判断文件是否存在判断文件是否存在 v在对一个文件进行访问之前,一般需要先判断文件是否在对一个文件进行访问之前,一般需要先判断文件是否存在,因为用不恰当的方式访问一个并不存在的文件,存在,因为用不恰当的方式访问一个并不存在的文件,就会导致错误。在就会导致错误。在php中,中,file_exists()函数能够检查函数能够检查文件是否存在,其结构形
4、式如下:文件是否存在,其结构形式如下:vfile_exists($string)。v参数参数$string为一个指向为一个指向文件文件或或目录目录的字符型变量,如的字符型变量,如果文件或目录存在,则返回值果文件或目录存在,则返回值true,反之返回,反之返回false。 【范例】如果网页需要调用php.txt,首先判断文件是否存在。如果不存在,发出警告“指定的文件不存在”,如果存在,输出“可以调用文件”。 打开目录打开目录 v函数函数opendir()用来打开一个目录,其语法结构如下:用来打开一个目录,其语法结构如下:vopendir(string $path)v参数参数$path为打开目录的
5、路径,函数将返回一个打开目为打开目录的路径,函数将返回一个打开目录的句柄,用于存储当前的目录资源,打开目录前像打录的句柄,用于存储当前的目录资源,打开目录前像打开文件一样,要先检测目录是否存在,如果打开一个不开文件一样,要先检测目录是否存在,如果打开一个不存在的目录,程序将出错。存在的目录,程序将出错。 【范例】利用函数opendir(),打开d盘下的images目录。打开目录打开目录v关闭目录关闭目录 v关闭目录利用函数关闭目录利用函数closedir(),其语法结构为:,其语法结构为:vclosedir($dp)v参数参数dp为使用函数为使用函数opendir()打开的目录返回的打开的目录
6、返回的资源对资源对象象。 打开目录失败时释放资源打开目录失败时释放资源v 读取目录读取目录 v在在php中使用中使用readdir()函数读取目录中的文件并返回文函数读取目录中的文件并返回文件名,其语法结构如下:件名,其语法结构如下:vreaddir($dp)v参数参数dp为使用函数为使用函数opendir()打开的目录返回的资源对打开的目录返回的资源对象象,函数返回目录下的文件名。下面通过示例讲解读取,函数返回目录下的文件名。下面通过示例讲解读取目录的方法。目录的方法。 【范例】利用函数opendir(),打开d盘下的images目录,并读取其下面的文件。读取目录读取目录 v 遍历目录遍历目
7、录 v一个目录下往往会存放很多文件,如果想查看某个目一个目录下往往会存放很多文件,如果想查看某个目录下存放的文件,可通过遍历目录,显示目录下的所录下存放的文件,可通过遍历目录,显示目录下的所有文件信息。目录就是一个典型的树形结构,实现遍有文件信息。目录就是一个典型的树形结构,实现遍历的方法很多,这里通过实例讲解目录的遍历。历的方法很多,这里通过实例讲解目录的遍历。【范例】利用递归实现遍历d盘images文件夹下所有的文件信息。遍历目录遍历目录 v 创建目录创建目录 v在备份当天数据或存放用户注册信息时,经常需要创建在备份当天数据或存放用户注册信息时,经常需要创建目录,目录,mkdir()函数可
8、以实现目录的创建,其结构形式函数可以实现目录的创建,其结构形式如下:如下:vmkdir(string $dirname,int $mode)v参数参数$dirname为字符变量,内容为想要创建目录的名为字符变量,内容为想要创建目录的名称。参数称。参数$mode为整型变量,默认是为整型变量,默认是 0777,表示创建模表示创建模式式,执行此函数将在指定目录下创建新的目录执行此函数将在指定目录下创建新的目录,mode 在在 windows 下被忽略下被忽略 。 新建目录新建目录v【范例】 在chengxu文件夹内创建存放照片的文件夹pic。 删除目录删除目录 vphp提供一个提供一个rmdir()
9、函数可以用来删除目录,其结构函数可以用来删除目录,其结构形式如下:形式如下:vrmdir(string $dirname)v参数参数$dirname为字符变量,为要删除目录的名称。为字符变量,为要删除目录的名称。【范例】删除d盘images的目录。 删除目录删除目录v v删除目录要注意的问题:v以上代码尝试删除根目录下名为“temp”的目录。v目录删除成功将返回true,如果删除失败将返回false,并显示错误信息,可以使用“”符号来抑制错误信息的输出。取得当前工作目录取得当前工作目录v 此函数用于获取当前的工作目录,通过对返回值的判断,确定当前操作的目录是否正确。代码如下所示。v v 获取当
10、前工作目录时要注意的问题:v 此函数运行时将返回一个字符串,记录当前目录情况。v 失败将返回false。改变当前目录改变当前目录v 回false。通过操作此函数,可以改变当前目录,以定位到可用资源,改变当前目录的演示代码如下所示。v ?phpv / 显示当前目录v echo getcwd() . ;v /改变当前目录v chdir(html);v / 显示当前目录v echo getcwd().;v ?v 在使用chdir()函数时,要注意以下问题:v 本例中的chdir()将当前目录更改为“html”。v 成功返回true,失败将返从目录句柄中读取条目从目录句柄中读取条目v 使用readdi
11、r()函数,会从目录句柄中读取下一个文件的文件名。配合while循环可以实现对目录的遍历,代码如下所示。v ?php$dir = “html”;$handle = opendir($dir);if ($handle != false) echo 本目录包含:;/* 这是正确地遍历目录方法 */while(false != ($file = readdir($handle)echo $file.;closedir($handle);elseecho “打开目录错误!”;?列出指定路径中的文件和目录列出指定路径中的文件和目录v scandir() 函数返回一个数组,其中包含指定路径中的文件和目录。
12、若成功,则返回一个数组,若失败,则返回 false。如果 directory 不是目录,则返回布尔值 false 并生成一条 e_warning 级的错误。v scandir(directory,sort,context) directory必需。规定要扫描的目录。sort可选。规定排列顺序。默认是 0 (升序)。如果是 1,则为降序。context可选。规定目录句柄的环境。context 是可修改目录流的行为的一套选项。v 关闭目录句柄关闭目录句柄v 在使用完opendir()打开的目录句柄后,应使用closedir()进行关闭,以节省服务器资源,代码如下所示。v directory类类v
13、为了方便用户对目录的操作,php提供了一个类似使用面向对象机制的函数,它实际上相当于使用readdir()、rewind()、closedir()三个函数实现遍历目录的功能,dir(directory) v handle.;v echo 路径:.$dir-path.;v while(false != ($entry = $dir-read()v echo $entry.;v v $dir-close();v ?操作文件的一般方法操作文件的一般方法v上一节学习了使用相关目录函数对目录进行新建、打开、删除、读取及关闭等操作。在这一节中将学习操作文件的一般步骤,即:打开、读取、写入、关闭。而本节很多
14、知识与上一节是相通的,如目录的打开与文件的打开,只不过它们使用的函数不一样而已。访问文件属性访问文件属性在进行处理文件之前,有时需要知道文件的一些属性,如文件的大小、类型、修改时间、在进行处理文件之前,有时需要知道文件的一些属性,如文件的大小、类型、修改时间、访问时间和文件的权限等。访问时间和文件的权限等。php提供了一些函数可直接获取文件的属性。提供了一些函数可直接获取文件的属性。函函 数数 名名作作 用用参数及返回值参数及返回值filesize(string)获取文件获取文件的大小的大小参数参数string为一个指向文件或目录的字符型变量。函数的返回值为整为一个指向文件或目录的字符型变量。
15、函数的返回值为整型变量,型变量,返回文件的大小返回文件的大小。如果出错,则返回。如果出错,则返回false。函数参数不能为。函数参数不能为远程文件,返回结果会被缓存远程文件,返回结果会被缓存filetype(string)获取文件获取文件的类型的类型参数参数string为一个指向文件或目录的字符型变量。函数的返回值为字为一个指向文件或目录的字符型变量。函数的返回值为字符型变量,可能出现的值有符型变量,可能出现的值有fifo,char,dir,block,link,file和和unknown,返回值会被缓存,返回值会被缓存filemtime(string)获取文件获取文件修改的时修改的时间间参数
16、参数string为一个指向文件或目录的字符型变量。函数的返回值为整为一个指向文件或目录的字符型变量。函数的返回值为整型变量,型变量,返回文件的修改时间返回文件的修改时间fileatime(string)获取文件获取文件的访问时的访问时间间参数参数string为一个指向文件或目录的字符型变量。函数的返回值为整为一个指向文件或目录的字符型变量。函数的返回值为整型变量,内容为型变量,内容为文件的访问时间文件的访问时间fileperms(string)获取文件获取文件的权限的权限参数参数string为一个指向文件或目录的字符型变量。函数的返回值为整为一个指向文件或目录的字符型变量。函数的返回值为整型变
17、量,内容为文件相应的权限,同其他这一类的函数一样,参数不型变量,内容为文件相应的权限,同其他这一类的函数一样,参数不能为远程文件,另外返回结果同样会被缓存能为远程文件,另外返回结果同样会被缓存打开文件打开文件 v读取文件中的数据之前,必须要先打开一个文件,这是其他文件操作的基础。php使用fopen()函数打开一个文件,其结构形式如下:vresource fopen (string $filename, string $mode)v其中参数filename是所要打开的文件名,可以打开本地文件,其形式为“scheme:/”。也可打开远程web服务器上的文件,其形式为“http:/.”。如果其形式
18、为以“ftp:/.”开头,则其表示打开的文件是远程ftp服务器上的。参数mode是要打开文件的方式,参数$mode是可以接收的模式。代码如下一页表所示,其中代码“b”和代码“t”仅作用于windows系统。 模模 式式说说 明明r只读方式打开,将文件指针指向文件头r+读写方式打开,将文件指针指向文件头w只写入方式打开,将文件指针指向文件头并将文件大小截为0。如果文件不存在,则尝试创建一个新文件w+写入方式打开,将文件指针指向文件头并将文件大小截为0。如果文件不存在,则尝试创建一个新文件a只写入方式打开,将文件指针指向文件末尾。如果文件不存在,则尝试创建一个新文件a+写入方式打开,将文件指针指向
19、文件末尾。如果文件不存在,则尝试创建一个新文件x只创建和打开本地文件只用于写入,从文件起点开始。如果文件已经存在,则fopen()返回假,而且php发送一个警告。如果文件不存在,则创建它x+创建和打开本地文件进行读取和写入,从文件起点开始。如果文件已经存在,fopen()返回假,而且php发送一个警告。如果文件不存在,则创建它b默认模式,与其他模式配合使用,用于对二进制文件和文本文件区别对待的文件系统。对于windows是必需的vfopen()返回一个值,这个值包含一个文件句柄的整数,用来向执行文件操作的函数标识该文件。有时这个值被称为文件指针,指针就形如内存地址中的一个个小房间的门号。如果p
20、hp打开文件失败,那么这个值是false。利用常用的打开文件的方式打开本地文件和远程文件。 打开文件打开文件v 在学习打开文件之前先看一段代码。代码如下所示。v 读取文件读取文件v 文件操作中最频繁的应该是读取操作,所以在读取文件时一定要注意优化代码,这样才能从代码层面提高程序质量。代码里的fread(),就是基本的读取文件函数,它的原型如下所示string fread ( int $handle, int $length )v读取文件读取文件v从文件中读取 10 个字节: vv读取整个文件:v写入文件写入文件v 写入文件操作具有重大的意义,软件运行时计算出来的数据,用户提交、修改的信息,通常
21、都需要保存下来,供以后使用。而把数据写入文件,就是其中的解决方案之一。为了方便理解,先看一段简单的写入文件的程序,代码如下所示。v v 代码里的fwrite(),就是写入文件函数,它的原型如下所示。v int fwrite ( resource $handle, string $string , int $length )关闭文件关闭文件v关闭文件正确的说法是关闭一个已经打开的文件句柄,fclose()只有唯一的一个参数,即文件句柄。使用fopen()或fscokopen()成功打开的句柄,都可以使用其来关闭。v文件的基本操作文件的基本操作v在上一节中学习了操作文件的一般步骤,以及一些基础的文
22、件系统函数。本节是在上节内容的基础上学习更多的文件系统函数及操作文件的技巧。在当前目录新建文件在当前目录新建文件v 新建文件使用的函数还是新建文件使用的函数还是fopen(),只不过是通过对fopen()的$mode值的选择来完成。在编写程序时,很多情况下要求某个文件的存在,作为程序的运行条件,这时就可以使用下面的代码:v v 使用fopen()函数新建文件时,要注意以下几个问题:v 这段简单的代码完成了在当前目录新建一个名为“model.txt”文件,注意如果fopen()的第一个参数是“html/model.txt”时,程序会在当前目录的子目录“html”,创建“model.txt”文件。
23、v 即使再短的打开文件操作,也应该使用关闭句柄函数。v 新建文件时,很容易因为文件存在或权限问题而失败,所以在新建文件前,应进行相关的检查。删除文件删除文件v 使用unlink()函数,可以删除程序运行时产生的临时文件。unlink()函数有1个参数,即要删除文件的路径与文件名。v 注意:使用unlink()函数删除文件时,如果删除成功,函数将返回true值,如果删除失败,函数将返回false值。v 新建临时文件新建临时文件v 很多情况下,变量会被保存下来,但等程序运行完成后,这些保存变量的文件就要被删除以节省服务器空间。但这个过程很麻烦的,程序员要记录过程中产生的文件的名称,还要使用函数对其
24、进行删除操作。而php为了使这一工作能够快速有效的完成,为程序员提供了一个函数,即:tmpfile()函数,函数的演示代码如下所示。v 新建具有唯一文件名的文件新建具有唯一文件名的文件v tempnam()函数与tempfile()函数的使用方法都是一样的,唯一区别的tempnam()函数将产生一个具有唯一文件名的文件。v 复制文件复制文件v复杂文件就是根据源文件的内容,建立一个拥有同样内容的新文件。在不想破坏操作文件时,可以通过复制源文件,对新产生的文件进行操作。复制文件使用copy()函数实现,演示代码如下所示。v 移动、重命名文件或目录移动、重命名文件或目录v 使用rename()函数,
25、可以移动、重新命名一个已经存在的文件或目录,rename(oldname,newname)函数重命名文件或目录 。v 写入文件写入文件v前面介绍过使用fwrite()函数写入文件的方法,在文件系统函数中,还可以使用fputs()、fputcsv()、file_put_contents()函数来把内容写入文件。vfputs()是fwrite()函数的别名,这两个函数的实现的功能是一样的,fputcsv()函数可以把数组按指定的规则写入文件,而file_put_contents(),可以把一个字符串直进写入文件。这3个函数各有特点,在实际应用中,就根据情况选择使用。写入文件写入文件vfwrite(
26、file,string,length)写入文件使用fwrite()函数,其有3个参数,第1个参数是必选参数,其值是使用fopen()函数,以及类似函数打开的文件句柄。第2个参数也是必选参数,其值是要写入文件的字符串变量。第3个参数是可选参数,如果指定了这个参数的值,fwrite()函数将在写入指定长度字符串后结束运行。写入文件写入文件v将字符串写入文件将字符串写入文件v 使用file_put_contents()函数,可以把一个字符串变量写入文件。file_put_contents()函数与fwrite()函数的不同之处在于,fwrite()函数需要一个fopen()或类似函数创建的句柄,fi
27、le_put_contents()只需要运行函数本身。vfile_put_contents(file,data,mode)v file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。 v data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。 v mode 可选。规定如何打开/写入文件。可能的值:v file_use_include_path/file_append /lock_ex v 提示:使用 file_append 可避免删除文件中已有的内容。v 注释:本函数可安全用于二进制对象。将字符串写入文件将字符串写入文件v v *v 文件的读取与指针文件的读取与指针
28、v文件读取函数分为两种,一种是把文件全部读入内存的函数,如file_get_contents()函数;一种是依靠文件内部的指针,来读取文件内容的函数,如fread()函数。这两种函数都有其优缺点,在实际应用中,可以根据情况选择。把整个文件读入到数组中把整个文件读入到数组中vfile()函数读取文件后,返回1个数组,其中数组的每个单元对应着文件的1行(包括换符)。file()函数不仅可以读取本地文件,还可以从网页中读取信息。vfile(path, include_path)vpath 必需。规定要读取的文件。 vinclude_path 可选。如果也想在 include_path 中搜寻文件的话
29、,可以将该参数设为 “1”。 v下面演示file()函数读取文件的方法,把整个文件读入到数组中把整个文件读入到数组中v ?phpv /使用file()函数读取html目录下的cache.txtv $array = file(html/cache.txt);v /遍历file()函数返回的数组v foreach($array as $line)v echo $line.;v v /使用file()函数读取网页内容v $webpage = file(http:/ /遍历file()函数返回的数组v foreach($webpage as $line)v echo $line;?将文件读取到字符串将
30、文件读取到字符串使用file_get_contents()函数,可以把参数指定的文件,整个读取到1个字符串变量中清单 file_get_contents()函数读取文件的方法 v 获取、设置文件内部指针位置获取、设置文件内部指针位置v文件内部指针,是文件操作系统内部的数据指针,用于标注文件当前的读写位置。使用ftell()函数可以查看当前文件内部指针的位置。使用fseek()函数,则可以快速的把文件的内部指针,指向参数指定的位置。vftell()函数只有1个参数,其值是使用fopen()或类似函数创建的句柄。ftell()函数运行后,将返回当前文件指针的位置。fseek()函数有3个参数,第1
31、个参数是必选参数,其值是使用fopen()函数,以及类似函数打开的文件句柄。第2个参数也是必选参数,其值是数字,代表指针移动到文件处的位置。从文件指针处读取字符从文件指针处读取字符v使用fgetc()函数,可以从当前文件指针处,读取一个字符并返回。下面演示fgetc()函数的使用方法,代码如清单所示从文件指针处读取数据从文件指针处读取数据v使用fgets()函数,可以读取文件指针指向的当前行,并返回一个记录当前行内容的字符串。fgets()函数包括2个参数,第1个参数是必选参数,其值是fopen()或类似函数创建的文件句柄,第2个参数是可选参数,其值用于指定读取文件的大小。从文件指针处读取数据
32、并过滤从文件指针处读取数据并过滤htmlv 使用fgetss()函数,可以从文件指针处读取一行数据,并过滤掉文件中的html与php标记v 重置文件指针的位置重置文件指针的位置v 使用rewind()函数,可以重置当前文件的指针位置,使指针返回到文件头。?phpv /使用fopen()打开一个文件v $fh = fopen(config.ini,r);v echo 显示当前指针:.ftell($fh).;v echo 使用fseek重定位指针到100;v fseek($fh,100);v echo 显示当前指针:.ftell($fh).;v echo 使用rewind()函数重置文件指针;v
33、rewind($fh);v echo 显示当前指针:.ftell($fh).;v ?文件尾部指针测试文件尾部指针测试v 使用feof()函数,可以检查当前文件的内部指针,是否已经处于文件尾部。feof()函数经常与while()循环语句配合,实现读取文件。feof()函数据的演示代码如下所示。v 文件的上传与下载文件的上传与下载v文件的上传与下载,都需要使用文件系统函数来完成。本节将介绍在文件上传与下载过程中,使用到的文件系统函数。处理上传文件的函数是move_uploaded_file(),实现文件下载的函数是fpassthru()。处理上传文件处理上传文件v使用html产生上传文件变量,产
34、生上传文件变量的表单,只能把要上传的文件,上传到系统的临时文件夹,要想把这个临时文件保存到指定的位置,需要使用move_uploaded_file()函数。vmove_uploaded_file(file,newloc) v第1个参数是必选参数,规定要移动的文件,其值是一个合法的上传文件名.v第2个参数是必选参数,规定文件的新位置,其值是由目录和文件名组成的字符串,代表临时文件存储的位置和文件名。v注释:本函数仅用于通过 http post 上传的文件。v注意:如果目标文件已经存在,将会被覆盖。读取文件到输出缓冲区读取文件到输出缓冲区v 使用readfile()函数,可以读取参数指定的文件到输
35、出缓冲区,被输入到缓冲区的内容,将在浏览器上显示。v 将文件输出到缓冲区将文件输出到缓冲区v 使用fpassthru ()函数,可以把参数指向的文件,输出到缓冲区。实现文件下载实现文件下载v 实现文件下载,需要两个方面的条件:一是向浏览器发送正确的报头,二是把文件输出到缓冲区。本小节使用readfile()函数,来实现文件的下载功能文件属性的操作文件属性的操作v文件属性包括文件的大小、修改时间、所有者、权限、类型等信息。通过了解文件的属性,可以帮助程序员判断文件现在的状态,对文件实现更细致的管理。获取文件统计信息获取文件统计信息v 使用stat()函数,可以获取参数指向文件的统计信息,下面演示
36、stat()函数的使用方法,代码如清单所示。v 清单 stat()函数使用方法 v $value)v echo 键名:$key:单元值:$value;v v ?通过文件句柄获取文件统计信息通过文件句柄获取文件统计信息v 使用fstat()函数,可以获取文件统计信息。v $value)v echo 键名:$key:单元值:$value;v v ?获取文件相关信息获取文件相关信息v 虽然可以使用stat()、fstat()函数,取得文件属性,但是每次使用文件属性时,都需要对数组进行访问。php提供了更加简捷的方法,来访问文件的某一个文件属性。这些函数主要包括:v fileatime()函数,用于取
37、得文件的上次访问时间。v filectime()函数,用于取得文件的inode修改时间。v filegroup()函数,用于取得文件的组。v fileinode()函数,用于取得文件的inode。v filemtime()函数,用于取得文件修改时间。v fileowner()函数,取得文件的所有者。v fileperms()函数,取得文件的权限。v filesize()函数,取得文件大小。v filetype()函数,取得文件类型。修改文件访问和修改时间修改文件访问和修改时间v使用touch()函数,可以改变指定文件的访问和修改时间。v?phpv/定义一个存储文件名的变量v$filename
38、= html/conteents.txt;v/使用当前时间,作为文件的最后访问和修改时间vtouch($filename);vecho $filename的最后访问时间是:.date(f d y h:i:s., fileatime($filename);vecho $filename的修改时间是:.date(f d y h:i:s., filemtime($filename);v/使用指定时间,作为文件的最后访问和修改时间vtouch($filename,time()-1000);vclearstatcache();/清除文件属性缓冲vecho $filename的最后访问时间是:.date(
39、f d y h:i:s., fileatime($filename);vecho $filename的修改时间是:.date(f d y h:i:s., filemtime($filename);v/使用指定时间,作为文件的最后访问时间vclearstatcache();/清除文件属性缓冲vtouch($filename,time()-2000,time()+2000);vecho $filename的最后访问时间是:.date(f d y h:i:s., fileatime($filename);vecho $filename的修改时间是:.date(f d y h:i:s., filemt
40、ime($filename);v?改变文件所属的组改变文件所属的组v 使用chgrp()函数可以改变文件所属的组。chgrp()函数的演示代码如下所示。v v 注意:只有超级用户可以任意修改文件的组。改变文件所有者改变文件所有者v 使用chown()函数可以改变文件的所有者。chown()函数的演示代码如下所示。v v 注意:只有超级用户可以任意修改文件的所有者。改变文件权限改变文件权限v 文件权限可以设定当前文件,被所有者、组用户和公共用户访问的权限。其值由4个八进制数表示,第1个八进制数是0,其后每1个八进制数由3个数字相加来表示访问权限:1表示文件可执行,2表示文件可写,4表示文件可读。
41、v 文件权限第1个数表示所有者对文件的访问权限,如果所有者对文件有全部访问权限,那么其值应该是1+2+4=7。v 文件权限第2个数表示组用户对文件的访问权限,如果组用户对文件有可读、可执行的权限,那么其值应该是1+4=5。v 文件权限第3个数表示公共用户对文件的访问权限,如果公共用户对文件只有可读权限,那么其值应该是1。文件操作的错误处理文件操作的错误处理v在文件操作过程中,由于权限、路径、文件名等不确定的因素,文件系统函数在操作文件时,会产生错误,为了避免错误产生,应在操作文件之前,就对文件进检测。本节主要介绍用于文件系统错误处理的函数。判断给定文件名是否是目录判断给定文件名是否是目录v由于
42、文件与目录的操作函数是不能通用的,所以在不确定给定的变量是文件名或目录的情况下,可以使用is_dir()函数进行检测,判断给定文件名是否可执行判断给定文件名是否可执行v 使用is_executable()函数,可以检测指定文件是否为可执行文件,如果测试文件存在,并可以执行,函数将返回true,否则返回false.v ?phpv /建立一个判断文件是否可以执行的函数v function isexec($file)v if(is_executable($file)v echo 文件$file可执行;v elseecho 文件$file不可执行;v v /定义存储文件名的变量v $file = ht
43、ml/contents.txt;v /使用函数判断这些变量v isexec($file);v ?判断给定文件名是否是文件判断给定文件名是否是文件v使用is_file()函数,可以检测指定文件是否为文件,如果是文件函数将返回true,否则返回false,is_file()函数演示代码如清单所示。判断指定文件是否可读判断指定文件是否可读v服务器端的脚本程序,访问文件系统时,使用的一般都是公共用户。由于公共用户的权限会受到一些限制,当文件权限不确定的情况下,可以使用is_readable()函数,测试指定文件是否可读。判断文件是否是通过判断文件是否是通过http post上传的上传的v使用html表
44、单通过post上传文件时,出于安全方面的考虑,可以使用is_uploaded_file()对上传的文件进行检测,is_uploaded_file()有1个必选参数,其值是文件上传变量的临时文件名。下面演示is_uploaded_file()函数的使用方法,vis_uploaded_file()函数运行后,如果临时文件是使用权http post方式上传的,将返回true值,否则返回false值。判断给定的文件名是否可写判断给定的文件名是否可写v 当文件权限不确定的情况下,可以使用当文件权限不确定的情况下,可以使用is_writable()函数,测试指定文件是否可写。函数,测试指定文件是否可写。v
45、 ?phpv /建立一个判断文件名是否可写的函数建立一个判断文件名是否可写的函数v function testwrite($file)v if(is_writable($file)v echo $file可写可写;v elseecho $file不可写不可写;v v /定义存储文件名的变量定义存储文件名的变量v $file1 = html/contents.txt;v $file1 = html/arraycontents.txt;v /使用函数判断这些变量使用函数判断这些变量v testwrite($file1);v testwrite($file1);v ?检查文件或目录是否存在检查文件或目录是否存在v 在使用文件系统函数时,除了权限问题可以引起错误外,要操作的文件或目录是否存在,也经常引发错误。在php中,可以使用file_exists()函数,检查指定目录或文件是否存在。路径与磁盘操作路径与磁盘操作v文件系统函数操作文件的同时,一定会涉及到对路径的相关操作。路径又分为相对路径和绝对路径,相对路径是以操作的文件所在目录为起点的路径;绝对路径是以当前文件所在盘符为起点的路径。本节主要介绍关于路径和磁盘方面的函数。获取文件路径的信息获取文件路径的信息v使用pathinfo()函数,可以对指定的路径和文件名进行解析,并返回一个数组。v$value)vecho $
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工安全隐患排查工具试题及答案
- 注册土木工程师考试研究生课程试题及答案
- 制造业绿色供应链管理在绿色物流中的绿色运输车辆管理优化报告
- 物理模型问题解析及答案2025年
- 2025年制造业数字化供应链协同产业协同技术创新研究报告
- 查验员考试题及答案
- 能源行业数字化转型智能电网优化:智能电网设备运维与健康管理报告
- 生鲜新零售行业2025年供应链优化与冷链物流解决方案报告
- 家具行业的市场竞争与产品设计创新相结合的研究试题及答案
- 控烟知识试题及答案解析
- 风电基础施工方案
- ICD-10疾病编码完整版
- 肩关节超声检查
- 毕业论文-中小企业防火墙的应用
- 可穿戴式设备安全可靠性技术规范 腕戴式设备
- 内科学动脉粥样硬化和冠状动脉粥样硬化性心脏病
- ×××章程修订对比表
- 《运算的意义》(教学设计)-2023-2024学年六年级下册数学北师大版
- 高效养中蜂关键技术
- 广州小学六年级英语下册知识点归纳和习题(全册)
- (正式版)JTT 1482-2023 道路运输安全监督检查规范
评论
0/150
提交评论