免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
學(xué)習(xí)PHP中的目錄操作

學(xué)習(xí)PHP中的目錄操作

對于編程語言來說,文件和目錄的操作是其最最基礎(chǔ)的功能。就像我們?nèi)粘V凶畛R姷膱D片上傳、文件上傳之類的功能,都需要文件和目錄操作的支持。今天我們先來簡單地學(xué)習(xí)一下 PHP 中關(guān)于目錄操作的一些類和函數(shù)。

目錄與路徑分隔符

首先來看看兩個常量,它們分別是目錄與路徑的分隔符號。

echo DIRECTORY_SEPARATOR, PHP_EOL; // /
echo PATH_SEPARATOR, PHP_EOL; // :

DIRECTORY_SEPARATOR 常量在 Linux 系統(tǒng)中輸出的就是 / 這個斜杠,而在 Win 系統(tǒng)中則是 \ 這樣的反斜杠。也就是說,它是根據(jù)當(dāng)前的操作系統(tǒng)來確定使用哪種目錄分隔符號的。PATH_SEPARATOR 是環(huán)境路徑的分隔符,在 Linux 系統(tǒng)中輸出的是 : ,其實就像是我們定義的系統(tǒng)環(huán)境變量一樣,在 Linux 系統(tǒng)中我們查看或添加修改 PATH 環(huán)境變量就都都是使用 : 來分隔的。

Directory 對象操作

既然有對象這個概念,那么也就說明目錄相關(guān)的操作其實也是有面向?qū)ο蠛兔嫦蜻^程兩種形式的,我們先來看看面向?qū)ο笫侨绾尾僮鞯摹?/p>$directory = dir('../');

while(($dir = $directory->read())!== false){
    echo $dir, PHP_EOL;
}
// .
// ..
// 1.PHP中的日期相關(guān)函數(shù)(三).md
// source

我們使用 dir() 函數(shù)來返回一個 Directory 對象,這里需要注意的是,Directory 對象是只能通過 dir() 函數(shù)來獲取的,無法通過 new 的方式來生成實例。在獲得 Directory 對象之后,我們就可以通過 read() 方法來讀取目錄中的所有內(nèi)容信息了。展示的內(nèi)容其實和我們在操作系統(tǒng)中使用 ll -a 命令獲取的結(jié)果是類似的,它會獲得 . 、 .. 這兩個目錄信息,代表當(dāng)前目錄和上級目錄。

echo $directory->read(), PHP_EOL;
//

$directory->rewind();
while(($dir = $directory->read())!== false){
    echo $dir, PHP_EOL;
}
// .
// ..
// 1.PHP中的日期相關(guān)函數(shù)(三).md
// source

read() 方法是游標(biāo)操作,也就是遍歷一次后游標(biāo)就會移動到最后一個位置,這時再調(diào)用 read() 就不會有任何信息了。這時我們可以通過 rewind() 方法重置游標(biāo),然后就可以重新遍歷目錄內(nèi)容。

$directory->close();
// while($dir = $directory->read()){
//     echo $dir, PHP_EOL;
// }
// Warning: Directory::read(): supplied resource is not a valid Directory resource 

最后就是 close() 方法,用于關(guān)閉當(dāng)前的目錄對象句柄。

面向過程 Directory 操作

接下來我們就看看使用面向過程的方式如何獲取目錄里面的內(nèi)容,我們同樣還是查看相同的這個目錄,輸出和上面面向?qū)ο蟮姆绞街型瑯拥男畔ⅰ?/p>$dirPath = __DIR__;
if(is_dir($dirPath)){
    if ($dh = opendir($dirPath)) {
        while(($dir = readdir($dh)) !== false){ 
            echo $dir, PHP_EOL;
        }
        echo readdir($dh), PHP_EOL;
        

        rewinddir($dh);
        while(($dir = readdir($dh)) !== false){ 
            echo $dir, PHP_EOL;
        }

        closedir($dh);
    }
}
// .
// ..
// 2.學(xué)習(xí)PHP中的目錄操作.php
// 1.PHP中的日期相關(guān)函數(shù)(三).php
//
// .
// ..
// 2.學(xué)習(xí)PHP中的目錄操作.php
// 1.PHP中的日期相關(guān)函數(shù)(三).php

is_dir() 函數(shù)用于判斷給定的路徑是否是一個目錄,這個函數(shù)相信不少同學(xué)都使用過。opendir() 是打開一個給定路徑的目錄句柄,其實就類似于 dir() 函數(shù)來獲得 Directory 對象,不過需要注意的是,opendir() 函數(shù)返回的是一個句柄資源對象,不是 Directory 對象。然后我們就可以使用 readdir() 函數(shù)讀取句柄對象中的所有目錄信息內(nèi)容了。

和 Directory 對象中的 read() 方法類似,readdir() 也是游標(biāo)操作的,當(dāng)遍歷完一次之后,我們可以通過 rewinddir() 函數(shù)來重置句柄游標(biāo)。最后就是 closedir() 函數(shù),同樣也是關(guān)閉一個句柄資源的函數(shù)。

其它目錄路徑操作

除了遍歷查看目錄之外,還有其它一些函數(shù)輔助我們獲得目錄相關(guān)的信息。

echo getcwd(), PHP_EOL;
// /Users/zhangyue/MyDoc/博客文章

chdir('dev-blog/php/202010');

echo getcwd(), PHP_EOL;
// /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202010

// chdir('dev-blog/php/202013'); 
// Warning: chdir(): No such file or directory (errno 2) 

chdir('/home');
echo getcwd(), PHP_EOL;
// /System/Volumes/Data/home

getcwd() 函數(shù)是獲取當(dāng)前運行 PHP 腳本的目錄信息。注意,它是你在什么位置運行的 PHP 這個命令腳本的路徑,也就是 PHP 程序的工作目錄,不是你當(dāng)前運行的文件的路徑。使用 chdir() 可以改變這個目錄信息。關(guān)于 getcwd() 函數(shù)的概念如果不是特別的清楚的話,請一定自己手動測試一下。

print_r(scandir($dirPath));
// Array
// (
//     [0] => .
//     [1] => ..
//     [2] => 1.PHP中的日期相關(guān)函數(shù)(三).php
//     [3] => 2.學(xué)習(xí)PHP中的目錄操作.php
// )

print_r(scandir('/Users'));
// Array
// (
//     [0] => .
//     [1] => ..
//     [2] => .localized
//     [3] => Guest
//     [4] => Shared
//     [5] => share
//     [6] => zhangyue
// )

scandir() 函數(shù)是列出指定路徑中的文件和目錄,它的參數(shù)必須是一個絕對路徑,能夠以數(shù)組的形式返回所有的內(nèi)容,在某些情況下非常地方便好用。

總結(jié)

關(guān)于 PHP 的目錄操作相關(guān)的內(nèi)容就是這些,其實還有 mkdir() 之類的函數(shù)也是操作目錄的,不過在 PHP 官方文檔中將它歸到了文件操作的講解中,所以我們也將在后面學(xué)習(xí)文件操作的時候再進(jìn)行深入的學(xué)習(xí)。

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202010/source/2.學(xué)習(xí)PHP中的目錄操作.php

參考文檔:

https://www.php.net/manual/zh/book.dir.php

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
PHP 文件系統(tǒng)完全指南
PHP中判斷文件存在使用is_file還是file_exists?
wordpress各種獲取路徑和URl地址的函數(shù)總結(jié)
php文件操作實例代碼
徹底搞明白PHP中的include和require
PHP中命名空間是怎樣的存在(一)?
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服