您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 3_2PHP文件与目录操作
PHP文件上传与下载处理PHP进阶1.1操作目录目录在文件系统中是一个重要的概念,专业的术语把其解释成存储在磁盘上的文件及其他目录的索引,也可以将其视为一个文件夹,在文件夹中,可以放置其他的文件或文件夹,从而使得计算机的文件系统井井有条。最顶层的目录称为根目录,在PHP中用“/”或“\\”代表。“.”代表当前目录,“..”代表上级目录。1.1.1打开目录句柄目录和文件的访问,都是通过句柄实现的,下边演示的是怎么样打开一个目录句柄,以便其他目录函数使用,代码如下所示。?php$dir=images;If($dir_handle=@opendir($dir)){//执行目录操作echo“获取目录句柄成功!”;//释放句柄closedir($dir_handle);}else{echo“打开目录错误”;}?1.1.2新建目录新建和删除目录属于文件系统函数,为了方便读者,把这两个函数放在本节中进行统一讲解。新建目录演示代码如下所示。?php//带有错误检测的新建目录if(@mkdir(temp,0700)){echo“创建目录成功!”;}else{echo“创建目录失败!”;}//新建目录htmlmkdir(html,0777);?1.1.3删除目录本函数会试图删除要求的目录,但是目录必须为空并具有相应的权限。代码如下所示。?phpif(@rmdir(temp)){echo“删除目录成功”;}else{echo“删除目录失败”;}?删除目录要注意的问题:以上代码尝试删除根目录下名为“temp”的目录。目录删除成功将返回TRUE,如果删除失败将返回FALSE,并显示错误信息,可以使用“@”符号来抑制错误信息的输出。1.1.4取得当前工作目录此函数用于获取当前的工作目录,通过对返回值的判断,确定当前操作的目录是否正确。代码如下所示。?php$path=getcwd();if($path==false){echo“取当前目录失败!”;}else{//显示当前目录echo$path;}?获取当前工作目录时要注意的问题:此函数运行时将返回一个字符串,记录当前目录情况。失败将返回FALSE。1.1.5改变当前目录回FALSE。通过操作此函数,可以改变当前目录,以定位到可用资源,改变当前目录的演示代码如下所示。?php//显示当前目录echogetcwd().br;//改变当前目录chdir('html');//显示当前目录echogetcwd().br;?在使用chdir()函数时,要注意以下问题:本例中的chdir()将当前目录更改为“html”。成功返回TRUE,失败将返1.1.6从目录句柄中读取条目使用readdir()函数,会从目录句柄中读取下一个文件的文件名。配合while循环可以实现对目录的遍历,代码如下所示。?php$dir=“html”;$handle=opendir($dir);if($handle!=false){echo‘本目录包含:br’;/*这是正确地遍历目录方法*/while(false!==($file=readdir($handle))){echo$file.’br’;}closedir($handle);}else{echo“打开目录错误!”;}?1.1.7列出指定路径中的文件和目录使用scandir()函数可以实现这个功能,并能按照参数对列出的目录进行排序,代码如下所示。?php$dir='html';$dir1=scandir($dir);$dir2=scandir($dir,1);if($dir1==false){echo“读取目录失败!”;}else{print_r($dir1);}print_r($dir2);?1.1.8关闭目录句柄在使用完opendir()打开的目录句柄后,应使用closedir()进行关闭,以节省服务器资源,代码如下所示。?php$dir=html;//检查$dir是否为目录if(is_dir($dir)){if($dir_handle=opendir($dir)){$directory=readdir($dir_handle);closedir($dir_handle);}}?1.1.9directory类为了方便用户对目录的操作,PHP提供了一个类似使用面向对象机制的函数,它实际上相当于使用readdir()、rewind()、closedir()三个函数实现遍历目录的功能,代码如下所示。?php$dir=dir(html);echo当前句柄:.$dir-handle.br;echo路径:.$dir-path.br;while(false!==($entry=$dir-read())){echo$entry.br;}$dir-close();?1.2.1打开文件在学习打开文件之前先看一段代码。代码如下所示。?php//打开本地文件$handle=fopen(html/cache.txt,r);//打开本地二进制文件$handle=fopen(html/title.png,wb);//打开远程文件$handle=fopen();//打开带有用户验证的FTP$handle=fopen(@rzphp.com/cache.txt,w);?1.2.2读取文件文件操作中最频繁的应该是读取操作,所以在读取文件时一定要注意优化代码,这样才能从代码层面提高程序质量。下面是一则读取文件的例子,代码如下所示。?php//找出要读取的文件$filename=html/cache.txt;//使用fopen()函数打开文件$handle=fopen($filename,r);//使用fread()函数读取文件$contents=fread($handle,filesize($filename));//使用fclose()函数关闭文件句柄fclose($handle);?代码里的fread(),就是基本的读取文件函数,它的原型如下所示。stringfread(int$handle,int$length)1.2.3写入文件写入文件操作具有重大的意义,软件运行时计算出来的数据,用户提交、修改的信息,通常都需要保存下来,供以后使用。而把数据写入文件,就是其中的解决方案之一。为了方便理解,先看一段简单的写入文件的程序,代码如下所示。?php//使用fopen()函数打开一个文件句柄$handle=fopen(“html/cache.txt”,”w”);//使用fwrite()函数向文件句柄内写入内容fwrite($handle,”添加文字到文件中”);//使用fclose()函数,关闭文件句柄fclose($handle);?代码里的fwrite(),就是写入文件函数,它的原型如下所示。intfwrite(resource$handle,string$string[,int$length])1.2.4关闭文件关闭文件正确的说法是关闭一个已经打开的文件句柄,在上面几个小节的学习中,都使用了这个函数,即:fclose();?php$handle=fopen(html/cache.txt,r);//操作文件fclose($handle);?fclose()只有唯一的一个参数,即文件句柄。使用fopen()或fscokopen()成功打开的句柄,都可以使用其来关闭。1.3.1在当前目录新建文件新建文件使用的函数还是fopen(),只不过是通过对fopen()的$mode值的选择来完成。在编写程序时,很多情况下要求某个文件的存在,作为程序的运行条件,这时就可以使用下面的代码:?php$handle=fopen(‘model.txt’,’w’);fclose($handle);?使用fopen()函数新建文件时,要注意以下几个问题:这段简单的代码完成了在当前目录新建一个名为“model.txt”文件,注意如果fopen()的第一个参数是“html/model.txt”时,程序会在当前目录的子目录“html”,创建“model.txt”文件。即使再短的打开文件操作,也应该使用关闭句柄函数。新建文件时,很容易因为文件存在或权限问题而失败,所以在新建文件前,应进行相关的检查。1.3.2新建临时文件很多情况下,变量会被保存下来,但等程序运行完成后,这些保存变量的文件就要被删除以节省服务器空间。但这个过程很麻烦的,程序员要记录过程中产生的文件的名称,还要使用函数对其进行删除操作。而PHP为了使这一工作能够快速有效的完成,为程序员提供了一个函数,即:tmpfile()函数,函数的演示代码如下所示。?php//建立一个临时文件句柄$temp_handle=tmpfile();//向临时文件内写入内容fwrite($temp_handle,写入到临时文件);//指文件指针指向文件头fseek($temp_handle,0);//读取从文件头开始的1024个字符并显示echofread($temp_handle,1024);//下边的操作将删除生成的临时文件fclose($temp_handle);?1.3.3新建具有唯一文件名的文件tempnam()函数与tempfile()函数的使用方法都是一样的,唯一区别的tempnam()函数将产生一个具有唯一文件名的文件。?php//使用tempnam()函数建立一个具有唯一文件名的临时文件$file=tempnam(html,tempnam);//使用fopen()函数打开临时文件$handle=fopen($tmpfname,r+);//使用fwrite()函数向临时文件写入内容fwrite($handle,这是tempnam()函数产生的文件);//关闭文件包柄fclose($handle);//使用完成后,删除临时文件unlink($file);?1.3.4删除文件使用unlink()函数,可以删除程序运行时产生的临时文件,删除文件的演示代码如下所示。?php//定义一个变量,保存文件名$file=html/cache.txt;//删除参数指定的文件unlink($file);?unlink()函数有1个参数,即要删除文件的路径与文件名。注意:使用unlink()函数删除文件时,如果删除成功,函数将返回TRUE值,如果删除失败,函数将返回FALSE值。1.3.5复制文件复杂文件就是根据源文件的内容,建立一个拥有同样内容的新文件。在不想破坏操作文件时,可以通过复制源文件,对新产生的文件进行操作。复制文件使用copy()函数实现,演示代码如下所示。?php//定义一个变量,保存文件名$file=html/cache.txt;$targetFile=html/copyCache.txt;//使用copy()函数复制文件,并使用if判断语句检查成功情况if(copy($file,$targetFile)==TRUE){echo复制文件成功!;}else{echo复制文件失败!;}//可以直接使用copy()函数copy(html/cache.txt,html/cache/tempCache.txt);?1.3.6移动、重命名文件或目录使用rename()函数,可以移动、重新命名一个已经存在的文件或目录,演示代码如下所示。?php//定义一个变量,保存文件名$file=html
本文标题:3_2PHP文件与目录操作
链接地址:https://www.777doc.com/doc-4008185 .html