当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

8.3文件和目录的通用操作

9/17/2020 9:31:19 PM 人评论

8.3文件和目录的通用操作

8.3 文件和目录的通用操作

有的函数既能操作文件也能操作目录,有的操作既要操作目录又要操作文件,所以文件和目录的操作有时候并没有明显的界线,本节将介绍一些文件和目录的通用操作。

8.3.1 获取路径中的文件名和目录名

调用函数basename()可以取得一个路径中的文件名部分,语法如下。


string basename(string $path);

参数$path是完整的路径名,该函数返回指定路径$path中的文件名部分。在Windows系统中,可以使用/或\作为目录分隔符,在UNIX系统中,使用/作为目录分隔符。

调用函数dirname()可以取得一个路径中的目录名部分,语法如下。


string dirname(string $path);

参数$path是完整的路径名,该函数返回指定路径$path中的目录名。

代码8-8演示了这两个函数的用法。

代码8-8 使用函数basename()和dirname()获取文件名和目录名8-8.php


     01 <?php
     02 $path = "/home/prog/php/sayHello.php";         //
完整的包含路径名的文件
     03 
     04 $file_name = basename($path);                  //
获取完整路径中的文件名
     05 $dir_name = dirname($path);                    //
获取完整路径中的目录名
     06 
     07 echo "
完整路径:".$path;
     08 echo "<hr>";
     09 echo "<br/>";
     10 
     11 echo "
其中目录名为:".$dir_name;              //
输出目录名
     12 echo "<br/>";
     13 echo "
其中文件名为:".$file_name;             //
输出文件名
     14 echo "<br/>";
     15 ?>

【代码解析】网络上传文件时经常需要判断文件的路径和名称,代码第04~05行很好地演示了获取这两个属性的过程。这段代码的执行结果如图8-10所示。

8.3.2 判断文件或目录是否存在

调用函数file_exists()可以检查指定的文件或目录是否存在,语法如下。


bool file_exists(stirng $filename);

该函数判断由参数$filename指定的文件或目录是否存在,如果存在,函数返回TRUE,否则函数返回FALSE。代码8-9演示了该函数的用法。

代码8-9 判断文件或目录是否存在8-9.php


     01 <?php
     02 $file = "data.txt";                             //
文件名
     03 $dir = "info/newdata";                          //
目录名
     04 
     05 if(file_exists($file))                          //
判断文件是否存在
     06 {
     07     echo "
当前目录中,文件".$file."
存在";
     08     echo "<br/>";
     09 }
     10 else
     11 {
     12      echo "
当前目录中,文件".$file."
不存在";
     13      echo "<br/>";
     14 }
     15 echo "<br/>";
     16 echo "<hr>";
     17 echo "<br/>";
     18 
     19 if(file_exists($dir))                           //
判断目录是否存在
     20 {
     21     echo "
当前目录下,目录".$dir."
存在";
     22     echo "<br/>";
     23 }
     24 else
     25 {
     26      echo "
当前目录下,目录".$dir."
不存在";
     27      echo "<br/>";
     28 }
     29 ?>

【代码解析】代码第02行定义了一个文件名,第03行定义了一个目录,第05行判断文件是否存在,第19行判断目录是否存在。这段代码的执行结果如图8-11所示。

图8-10 使用PHP函数获取路径中的目录名和文件名

图8-11 使用PHP函数判断文件和目录是否存在

8.3.3 建立目录和删除目录

PHP提供了如下函数在文件系统中建立目录和删除目录,在PHP程序中可以很方便地使用它们。

·函数mkdir($pathname,$mode),用来创建一个目录。参数$pathname指要创建的目录的路径或名称,参数$mode指所建目录的访问权限,它通常是指UNIX系统下的访问权限。如果目录创建成功,函数返回TRUE,否则返回FALSE。

·函数rmdir($pathname),用来删除一个目录。参数$pathname指要删除的目录,但该目录必须是空目录,并且在UNIX下,该目录要有相应的删除权限。如果目录删除成功,函数返回TRUE,否则返回FALSE。

代码8-10演示了这两个函数的用法。

代码8-10 使用函数创建并删除目录8-10.php


     01 <?php
     02 $dir_name = "tmp_data";                 //
一个目录名
     03 
     04 if(mkdir($dir_name))                    //
在当前目录下创建目录tmp_data
     05 {
     06     echo "
目录".$dir_name."
创建成功!";
     07     
     08     //
在目录tmp_data
中创建一个文件tmp.txt
,并向其中写入一些内容
     09     if($fp = fopen($dir_name."/tmp.txt",'a'))
     10     {
     11         if(fwrite($fp,"Put Some Contenets into File."))
     12         {
     13             echo "<hr>";
     14             echo "
在目录".$dir_name."
下创建文件tmp.txt";
     15         }
     16     }
     17 }
     18 else
     19 {
     20     echo "
创建目录失败!";
     21     exit;
     22 }
     23 echo "<hr>";
     24 
     25 if(rmdir($dir_name))       //
尝试删除目录tmp_data
     26 {
     27     echo "
删除目录".$dir_name."
成功!";
     28 }
     29 else
     30 {
     31     echo "
删除目录失败!";
     32     exit;
     33 }
     34 ?>

【代码解析】这段代码首先在当前目录下创建名为tmp_data的目录,如果创建成功,则在该目录下创建一个名叫tmp.txt的文件,并向其写入一些内容。接着,程序使用函数rmdir()删除刚刚创建的目录tmp_data,如果前面的文件创建成功,说明目录tmp_data不为空,则调用函数rmdir()删除目录会失败。程序的执行结果如图8-12所示。

说明 读者的演示效果可能与笔者不同,因为如果是XP系统,则全部代码可能顺利运行,如果是Windows 7系统,由于用户控制权限的不同,所以可能输出效果会不同。当然,如果已经存在这个文件或打开了这个文件,也有创建失败的可能。

8.3.4 复制、删除和移动文件

在PHP中,复制、删除和移动文件也可以通过其提供的预定义函数完成。下面列举了用于复制、删除和移动文件的函数。

·函数copy($source,$desc),用来把文件从参数$source指定的位置,复制到由参数$desc指定的位置。如果复制成功,该函数返回TRUE,否则该函数返回FALSE。

·函数unlink($file),用来删除由参数$file指定的文件。如果删除成功,该函数返回TRUE,否则返回FALSE。

·函数rename($oldname,$newname),用来把由参数$oldname指定的文件重命名为由参数$newname指定的名字。这两个参数都可以是一个带文件名的完整路径,从而完成文件从一个目录到另一个目录的移动。

代码8-11演示了这些函数的用法。

代码8-11 使用函数复制并删除文件8-11.php


     01 <?php
     02 $dir_name = "tmp_data";                                 //
目录名
     03 $new_file = "tmp_new.txt";                              //
文件名
     04 
     05 if(!copy($dir_name."/tmp.txt",$new_file))               //
复制文件
     06 {
     07     echo "Copy 
文件tmp.txt
失败";
     08     exit;
     09 }
     10 
     11 echo "
文件tmp.txt
复制成功";
     12 echo "<br/>";
     13 echo "<br/>";
     14 echo "<hr>";
     15 echo "<br/>";
     16 
     17 if(unlink($new_file))                                   //
删除指定的文件
     18 {
     19     echo "
文件".$new_file."
删除成功";
     20 }
     21 else
     22 {
     23     echo "
文件".$new_file."
删除失败";
     24 }
     25 ?>

【代码解析】这段代码首先将8.3.3小节由代码8-10创建的目录tmp_data下的文件tmp.txt复制到当前目录下,同时重新命名为tmp_new.txt。然后,使用函数unlink()删除文件tmp_new.txt。如果一切正常,该函数的执行结果如图8-13所示。

图8-12 使用PHP的函数创建和删除目录

图8-13 复制并删除文件

相关教程

共有条评论 网友评论

验证码: 看不清楚?