摘要:一解析目錄路徑程序配置文件配置文件中涉及路徑均使用,也可以使用目錄分隔符常量進(jìn)行連接麻煩多路徑分隔符,也可以使用路徑分隔符常量進(jìn)行連接程序換行符常量相對(duì)路徑當(dāng)前目錄上級(jí)目錄不同的根路徑服務(wù)器根目錄操作系統(tǒng)盤(pán)根目錄路徑解析函數(shù)取文件名取目錄名
一、解析目錄路徑
1.PHP程序、配置文件、Apache配置文件中涉及路徑均使用/,也可以使用目錄分隔符常量DIRECTORY_SEPARATOR進(jìn)行連接(麻煩)
2.多路徑分隔符Windows;Linux:,也可以使用路徑分隔符常量PATH_SEPARATOR進(jìn)行連接
3.程序換行符常量PHP_EOL
4.相對(duì)路徑:./當(dāng)前目錄../上級(jí)目錄
5.不同的根路徑
echo "";//服務(wù)器根目錄 mkdir("/hello");//操作系統(tǒng)盤(pán)根目錄
6.路徑解析函數(shù)
a.basename()取文件名 b.dirname()取目錄名 c.pathinfo()將路徑信息返回成數(shù)組 d.realpath()返回規(guī)范化的絕對(duì)路徑名
二、遍歷目錄
1.glob:匹配目錄中指定文件放入返回?cái)?shù)組中
2.Directory函數(shù):
?chdir — 改變目錄 ?chroot — 改變根目錄 ?closedir — 關(guān)閉目錄句柄 ?dir — 返回一個(gè) Directory 類實(shí)例 ?getcwd — 取得當(dāng)前工作目錄 ?opendir — 打開(kāi)目錄句柄 ?readdir — 從目錄句柄中讀取條目 ?rewinddir — 倒回目錄句柄 ?scandir — 列出指定路徑中的文件和目錄 **注:遍歷目錄時(shí),前兩個(gè)文件名.和..要過(guò)濾掉**
$open=opendir("test"); /*echo readdir($open);*/ while($filename=readdir($open)){ //過(guò)濾掉.和.. if($filename!=="."&&$filename!==".."){ //注意:此處$filename僅代表目錄名或文件名,要訪問(wèn)還要加上路徑 $filename="./test/".$filename; if(is_dir($filename)){ echo "目錄:".$filename."
"; }else{ echo "文件:".$filename."
"; } } } //使用倒回句柄,倒回至目錄開(kāi)始,才能再次遍歷 rewinddir($open); echo"------------------------------------------
"; while($filename=readdir($open)){ //過(guò)濾掉.和.. if($filename!=="."&&$filename!==".."){ //注意:此處$filename僅代表目錄名或文件名,要訪問(wèn)還要加上路徑 $filename="./test/".$filename; if(is_dir($filename)){ echo "目錄:".$filename."
"; }else{ echo "文件:".$filename."
"; } } } closedir($open);
三、統(tǒng)計(jì)目錄中個(gè)數(shù)和大小
1.使用遞歸統(tǒng)計(jì)目錄下所有文件的個(gè)數(shù),如下:
$dirNum=0; $fileNum=0; function getdirnum($filename){ if(is_dir($filename)){ $dir=opendir($filename); global $dirNum; global $fileNum; while($filename=readdir($dir)){ if($filename!=="."&&$filename!==".."){ $filename=$file."/".$filename; if(is_dir($filename)){ $dirNum++; getdirnum($filename);//遞歸 }else{ $fileNum++; } } } echo "目錄個(gè)數(shù)為".$dirNum."
"; echo "文件個(gè)數(shù)為".$fileNum."
"; closedir($dir); }else{ echo "這個(gè)文件名不是目錄
"; } } getdirnum("test");
2.使用遞歸統(tǒng)計(jì)目錄大小,即目錄下所有文件大小的和
$size=0; function dirsize($file){ global $size; if(is_dir($file)){ $dir=opendir($file); while($filename=readdir($dir)){ if($filename!=="."&&$filename!==".."){ $filename=$file."/".$filename; if(is_dir($filename)){ $size+=dirsize($filename); }else{ $size+=filesize($filename); } } } closedir($dir); }else{ $size=filesize($filename); } return $size/pow(2,10)."MB"; } echo dirsize("test");
3.統(tǒng)計(jì)磁盤(pán)/磁盤(pán)可用空間大小
$total=disk_total_space("c:"); $valuable=disk_free_space("c:"); echo $total/pow(2,30).""; echo $valuable/pow(2,30)." ";
三、建立和刪除目錄
1.mkdir("test",0644):創(chuàng)建目錄
bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )
注:$mode為權(quán)限,用戶、組、其他用戶各自有r=4/w=2/x=1的權(quán)限,如0644為rw_/r__/r__(Linux權(quán)限的知識(shí))
2.rmdir("test"):刪除目錄,注意目錄要為空
3.unlink("test.php"):刪除文件
4.利用遞歸刪除非空目錄,如下:
**注:切記排除目錄下的.和..,否則會(huì)刪除整個(gè)磁盤(pán)內(nèi)容,且不進(jìn)回收站!**
function deleteDir($dirname){ $dir=opendir($dirname); while($filename=readdir($dir)){ if($filename!=="."&&$filename!==".."){ $filename=$dirname."/".$filename; if(is_dir($filename)){ deleteDir($filename); }else{ unlink($filename); } } } closedir($dir); rmdir($dirname); } deleteDir("test");
5.復(fù)制和移動(dòng)目錄
1.rename():重命名一個(gè)文件或目錄,加上路徑后即為移動(dòng)文件,因此移動(dòng)和重命名是一個(gè)函數(shù)
bool rename ( string $oldname , string $newname [, resource $context ] )
2.copy():只能拷貝文件,無(wú)法拷貝目錄
bool copy ( string $source , string $dest [, resource $context ] )
3.拷貝非空目錄函數(shù):
function copyDir($dirname,$dircopy){ mkdir($dircopy); $dir=opendir($dirname); while($filename=readdir($dir)){ if($filename!=="."&&$filename!==".."){ $srcfile=$dirname."/".$filename;//原目錄名或文件名 $tofile=$dircopy."/".$filename;//新目錄名或文件名 if(is_dir($srcfile)){ copyDir($srcfile,$tofile); }else{ copy($srcfile,$tofile); } } } closedir($dir); } copyDir("test","test222");
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/25702.html
摘要:同時(shí),還封裝了常用目錄及文件操作的面向?qū)ο蠼涌诤偷鹘涌诜奖愦蠹沂褂梦募到y(tǒng)的元數(shù)據(jù)什么是元數(shù)據(jù)元數(shù)據(jù)通俗一點(diǎn)講就是數(shù)據(jù)的數(shù)據(jù)。 本文首發(fā)于個(gè)人博客 PHP 文件系統(tǒng)完全指南,轉(zhuǎn)載請(qǐng)注明出處。 今天我們將開(kāi)啟一個(gè)新的探索旅程,深入到 PHP 文件系統(tǒng)中,系統(tǒng)的學(xué)習(xí)和掌握 PHP 文件系統(tǒng)的基本使用。 相信大家在日常研發(fā)過(guò)程中,難免需要和各種文件糾纏不清。比如,打開(kāi) .env 文件并從...
摘要:例子讀取目錄中的文件關(guān)閉返回的資源對(duì)象運(yùn)行結(jié)果表示當(dāng)前目錄表示上一級(jí)目錄目錄中的文件目錄中的文件目錄中的文件創(chuàng)建目錄要?jiǎng)?chuàng)建的目錄地址例子創(chuàng)建目錄創(chuàng)建目錄刪除目錄要?jiǎng)h除的目錄地址,該目錄必須是一個(gè)空目錄例子刪除目錄刪除目錄 打開(kāi)目錄 opendir(string path);//path--目錄所在的路徑,返回一個(gè)資源對(duì)象,用于存儲(chǔ)當(dāng)前目錄資源 bool is_dir(string p...
摘要:用進(jìn)行操作為在的工作區(qū)域,項(xiàng)目也是掛載在里面,所有我們可以直接在容器里運(yùn)行。或者進(jìn)入宿主機(jī)目錄下用命令注意事項(xiàng)注意掛載路徑構(gòu)建失敗時(shí),注意容器內(nèi)是否報(bào)錯(cuò)加速鏡像。本文首發(fā)在我的博客徒手用構(gòu)建自己的開(kāi)發(fā)環(huán)境 1. 前言 1.1 為什么要用 Docker ? 是否有這樣的場(chǎng)景,你搞了一個(gè)項(xiàng)目,在本地開(kāi)發(fā)時(shí)需要搭建環(huán)境,放到線上時(shí)也需要搭建環(huán)境,到公司想暗戳戳玩一下要搭建環(huán)境,不搭還不行,因...
閱讀 1354·2019-08-30 15:44
閱讀 2098·2019-08-30 11:04
閱讀 517·2019-08-29 15:17
閱讀 2539·2019-08-26 12:12
閱讀 3131·2019-08-23 18:09
閱讀 921·2019-08-23 15:37
閱讀 1522·2019-08-23 14:43
閱讀 2920·2019-08-23 13:13