当前位置: 首页 > 后端技术 > PHP

学习PHP的目录操作

时间:2023-03-29 17:49:35 PHP

对于编程语言来说,文件和目录操作是最基本的功能。就像我们日常生活中最常见的图片上传、文件上传等功能一样,都需要文件和目录操作的支持。今天,我们就来简单学习一下PHP中一些关于目录操作的类和函数。目录和路径分隔符首先,让我们看一下两个常量,它们是目录和路径的分隔符。echoDIRECTORY_SEPARATOR,PHP_EOL;///echoPATH_SEPARATOR,PHP_EOL;//:DIRECTORY_SEPARATOR常量在Linux系统输出斜杠/,在Win系统输出反斜杠\。也就是说,它根据当前的操作系统来决定使用哪个目录分隔符。PATH_SEPARATOR是环境路径的分隔符。在Linux系统中,输出为:。其实就像我们定义的系统环境变量一样。在linux系统中,我们在查看或者添加修改PATH环境变量的时候,都是用:来分隔的。既然目录对象操作有了对象的概念,就意味着目录相关的操作实际上有两种形式:面向对象和面向过程。我们先来看看面向对象的操作是如何进行的。$directory=dir('../');while(($dir=$directory->read())!==false){echo$dir,PHP_EOL;}//.//..//1.PHP中日期相关函数(3).md//source我们使用dir()函数返回目录对象。这里需要注意的是,Directory对象只能通过dir()函数获取,不能通过new方式创建实例。获取到Directory对象后,我们就可以使用read()方法读取目录中的所有内容信息。显示的内容其实和在操作系统中使用ll-a命令得到的结果类似。它将获取两个目录信息,.和..,代表当前目录和父目录。echo$directory->read(),PHP_EOL;//$directory->rewind();while(($dir=$directory->read())!==false){echo$dir,PHP_EOL;}//.//..//1.PHP中日期相关的函数(3).md//sourceread()方法是游标操作,即遍历一次后游标会移动到最后一个位置,然后调用read()不会有任何信息。这时候我们可以通过rewind()方法重新设置游标,然后我们就可以再次遍历目录的内容了。$directory->close();//while($dir=$directory->read()){//echo$dir,PHP_EOL;//}//警告:Directory::read():提供的资源不是最后一个有效的目录资源是close()方法,它用于关闭当前目录对象句柄。面向过程的目录操作接下来我们看看如何使用面向过程的方法获取目录的内容。我们也查看相同的目录并输出与上述面向对象方法相同的信息。$dirPath=__DIR__;if(is_dir($dirPath)){if($dh=opendir($dirPath)){while(($dir=readdir($dh))!==false){echo$dir,PHP_EOL;}echoreaddir($dh),PHP_EOL;rewinddir($dh);while(($dir=readdir($dh))!==false){echo$dir,PHP_EOL;}closedir($dh);}}//.//..//2.学习PHP.php中的目录操作//1.PHP中日期相关的函数(3).php////.//..//2.学习PHP在目录operation.php//1.PHP中日期相关的函数(3)。.phpis_dir()函数用于判断给定路径是否为目录。这个功能相信很多同学都用过。opendir()是打开给定路径的目录句柄。其实获取Directory对象和dir()函数类似,但是需要注意的是opendir()函数返回的是句柄资源对象,而不是Directory对象。那么我们就可以使用readdir()函数来读取handle对象中的所有目录信息内容。与Directory对象中的read()方法类似,readdir()也是一个游标操作。遍历一次后,我们可以通过rewinddir()函数重新设置句柄游标。最后是closedir()函数,也是一个关闭句柄资源的函数。其他目录路径操作除了遍历和查看目录外,还有其他功能可以辅助我们获取目录相关信息。echogetcwd(),PHP_EOL;///Users/zhangyue/MyDoc/blogarticlechdir('dev-blog/php/202010');echogetcwd(),PHP_EOL;///Users/zhangyue/MyDoc/blogarticle/dev-blog/php/202010//chdir('dev-blog/php/202013');//警告:chdir():没有这样的文件或目录(errno2)chdir('/home');echogetcwd(),PHP_EOL;///System/Volumes/Data/homegetcwd()函数是获取当前运行的PHP脚本的目录信息。注意这里是你运行的PHP命令脚本的路径,也就是PHP程序的工作目录,不是你当前运行的文件的路径。使用chdir()更改此目录信息。如果对getcwd()函数的概念不是特别清楚,请自行手动测试。print_r(scandir($dirPath));//Array//(//[0]=>.//[1]=>..//[2]=>1.PHP中日期相关的函数(3).php//[3]=>2.学习PHP.php中的目录操作//)print_r(scandir('/Users'));//Array//(//[0]=>.//[1]=>..//[2]=>.localized//[3]=>Guest//[4]=>Shared//[5]=>share//[6]=>zhangyue//)scandir()函数是列出指定路径下的文件和目录。它的参数必须是绝对路径,并且可以以数组的形式返回所有内容,在某些情况下非常方便易用。总结一下PHP中目录操作相关的内容。其实还有像mkdir()这样的函数也是对目录进行操作的,只是PHP官方文档中对文件操作的解释中包含了它们,所以后面我们在学习文件操作时会进行深入研究.测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/2。学习PHP中的目录操作。php参考文档:https://www.php.net/manual/zh/book.dir.php各媒体平台均可搜索【硬核项目经理】