echoDIRECTORY_SEPARATOR,PHP_EOL;///echoPATH_SEPARATOR,PHP_EOL;//:

DIRECTORY_SEPARATOR 常量在 Linux 系统中输出的便是 / 这个斜杠,而在 Win 系统中则是 \ 这样的反斜杠。
也便是说,它是根据当前的操作系统来确定利用哪种目录分隔符号的。
PATH_SEPARATOR 是环境路径的分隔符,在 Linux 系统中输出的是 : ,实在就像是我们定义的系统环境变量一样,在 Linux 系统中我们查看或添加修正 PATH 环境变量就都都是利用 : 来分隔的。

Directory 工具操作

既然有工具这个观点,那么也就解释目录干系的操作实在也是有面向工具和面向过程两种形式的,我们先来看看面向工具是如何操作的。

$directory=dir('../');while(($dir=$directory->read())!==false){echo$dir,PHP_EOL;}//.//..//1.PHP中的日期干系函数(三).md//source

我们利用 dir() 函数来返回一个 Directory 工具,这里须要把稳的是,Directory 工具是只能通过 dir() 函数来获取的,无法通过 new 的办法来天生实例。
在得到 Directory 工具之后,我们就可以通过 read() 方法来读取目录中的所有内容信息了。
展示的内容实在和我们在操作系统中利用 ll -a 命令获取的结果是类似的,它会得到 . 、 .. 这两个目录信息,代表当前目录和上级目录。

php当前目录进修PHP中的目次操作 HTML

echo$directory->read(),PHP_EOL;//$directory->rewind();while(($dir=$directory->read())!==false){echo$dir,PHP_EOL;}//.//..//1.PHP中的日期干系函数(三).md//source

read() 方法是游标操作,也便是遍历一次后游标就会移动到末了一个位置,这时再调用 read() 就不会有任何信息了。
这时我们可以通过 rewind() 方法重置游标,然后就可以重新遍历目录内容。

$directory->close();//while($dir=$directory->read()){//echo$dir,PHP_EOL;//}//Warning:Directory::read():suppliedresourceisnotavalidDirectoryresource

末了便是 close() 方法,用于关闭当前的目录工具句柄。

面向过程 Directory 操作

接下来我们就看看利用面向过程的办法如何获取目录里面的内容,我们同样还是查看相同的这个目录,输出和上面面向工具的办法中同样的信息。

$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中的日期干系函数(三).php////.//..//2.学习PHP中的目录操作.php//1.PHP中的日期干系函数(三).php

is_dir() 函数用于判断给定的路径是否是一个目录,这个函数相信不少同学都利用过。
opendir() 是打开一个给定路径的目录句柄,实在就类似于 dir() 函数来得到 Directory 工具,不过须要把稳的是,opendir() 函数返回的是一个句柄资源工具,不是 Directory 工具。
然后我们就可以利用 readdir() 函数读取句柄工具中的所有目录信息内容了。

和 Directory 工具中的 read() 方法类似,readdir() 也是游标操作的,当遍历完一次之后,我们可以通过 rewinddir() 函数来重置句柄游标。
末了便是 closedir() 函数,同样也是关闭一个句柄资源的函数。

其它目录路径操作

除了遍历查看目录之外,还有其它一些函数赞助我们得到目录干系的信息。

echogetcwd(),PHP_EOL;///Users/zhangyue/MyDoc/博客文章chdir('dev-blog/php/202010');echogetcwd(),PHP_EOL;///Users/zhangyue/MyDoc/博客文章/dev-blog/php/202010//chdir('dev-blog/php/202013');//Warning:chdir():Nosuchfileordirectory(errno2)chdir('/home');echogetcwd(),PHP_EOL;///System/Volumes/Data/home

getcwd() 函数是获取当前运行 PHP 脚本的目录信息。
把稳,它是你在什么位置运行的 PHP 这个命令脚本的路径,也便是 PHP 程序的事情目录,不是你当前运行的文件的路径。
利用 chdir() 可以改变这个目录信息。
关于 getcwd() 函数的观点如果不是特殊的清楚的话,请一定自己手动测试一下。

print_r(scandir($dirPath));//Array//(//[0]=>.//[1]=>..//[2]=>1.PHP中的日期干系函数(三).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