PHP目錄函數(shù)實(shí)現(xiàn)創(chuàng)建、讀取目錄
添加時(shí)間:2014-7-16 17:32:56
添加:
思海網(wǎng)絡(luò)
在PHP網(wǎng)站開(kāi)發(fā)中文件目錄函數(shù)的應(yīng)用。在PHP網(wǎng)站開(kāi)發(fā)中,我們時(shí)常需要讀取目錄文件信息或者創(chuàng)建目錄以存放必要的文件,而當(dāng)目錄文件大小超出規(guī)定大小
時(shí)我們又需要?jiǎng)h除目錄文件,如手工刪除目錄即費(fèi)時(shí)又費(fèi)力,我們完全可以通過(guò)PHP自帶的目錄操作函數(shù)實(shí)現(xiàn)對(duì)目錄文件的管理。
本文以實(shí)例教程形式講解如何使用PHP文件目錄函數(shù),實(shí)例的主要功能:一、利用PHP目錄函數(shù)創(chuàng)建多個(gè)目錄,二、在目錄下創(chuàng)建文本文件并在文件中寫(xiě)入相關(guān)信息,三、遞歸實(shí)現(xiàn)讀取(遍歷)目錄(文件夾)信息并以列表形式列出目錄下的所有子目錄及文件。
本實(shí)例涉及到文件讀寫(xiě)操作,推薦先查看PHP文件讀寫(xiě)教程。
本實(shí)例目錄結(jié)構(gòu):PHP執(zhí)行文件與leapsoulcn目錄處在同一級(jí),創(chuàng)建的子目錄處在leapsoulcn目錄下。
第一步:使用PHP目錄函數(shù)創(chuàng)建相關(guān)目錄
<?
mkdir("leapsoulcn",0777);
mkdir("leapsoulcn/leapsoul",0777);
mkdir("leapsoulcn/php",0777);
mkdir("leapsoulcn/php/web",0777);
mkdir("leapsoulcn/php/web/test",0777);
?>
說(shuō)明:在這段代碼中,先使用PHP目錄函數(shù)mkdir創(chuàng)建主目錄leapsoulcn,并創(chuàng)建了兩個(gè)子目錄,leapsoul及php,在php目錄下創(chuàng)建了web以及test目錄。
知 識(shí)點(diǎn):mkdir主要用來(lái)創(chuàng)建目錄,有兩個(gè)參數(shù):新目錄名(注意創(chuàng)建多級(jí)目錄時(shí),必須包含目錄路徑),新目錄的訪問(wèn)權(quán)限,即umask值,第一個(gè)數(shù)字通常 是0,第二個(gè)數(shù)字指定了所有者特許,第三個(gè)數(shù)字指定了所有者用戶(hù)群的特許 ,第四個(gè)數(shù)字制定了全局特許,可用值如下:
1 = 可執(zhí)行
2 = 可寫(xiě)
4 = 可讀
將三個(gè)數(shù)字加起來(lái),7代表?yè)碛兴袡?quán)限,你可以根據(jù)自己的需要對(duì)創(chuàng)建的新目錄賦予不同的權(quán)限。
第二步:在leapsoulcn/php/目錄下創(chuàng)建leapsoulcn.txt文件,并寫(xiě)入相關(guān)的內(nèi)容
<?
@$fp = fopen("leapsoulcn/php/leapsoulcn.txt","w");
if(!$fp){
echo "system error";
exit();
}else {
$fileData = "domain"."\t"."www.jb51.net"."\n";
$fileData = $fileData."deion"."\t"."PHP網(wǎng)站開(kāi)發(fā)教程網(wǎng),面向PHP初學(xué)者的PHP教程網(wǎng)。"."\n";
$fileData = $fileData."title"."\t"."本實(shí)例主要講述PHP目錄函數(shù)的具體應(yīng)用:涵蓋讀取目錄、創(chuàng)建目錄、刪除目錄等功能";
fwrite($fp,$fileData);
fclose($fp);
}
?>
說(shuō)明:這段實(shí)例代碼具體解釋可參考之前介紹的PHP文件寫(xiě)入教程。
第三步:讀取(遍歷)目錄名及文本文件名
<?
$dir = opendir("leapsoulcn");
while ($fileDir = readdir($dir)) {
if (!strcmp($fileDir,".")!strcmp($fileDir,"..")) {
continue;
}
echo $fileDir."目錄列表:<br/><br/>";
$subDir = "leapsoulcn/".$fileDir;
$dirC = "->";
listSubDir($subDir,$dirC);
}
closedir($dir);
?>
說(shuō)明:在這段代碼實(shí)例教程中主要使用了PHP目錄函數(shù)opendir(),readdir(),closedir()。
知識(shí)點(diǎn):
1、opendir函數(shù)用來(lái)打開(kāi)所游覽的具體目錄,函數(shù)參數(shù)為目錄名,注意,由于在本實(shí)例教程中PHP執(zhí)行文件和游覽的主目錄處在同一級(jí),所以傳遞的參數(shù)僅僅只是目錄名,如果不在同一級(jí)或讀取多級(jí)目錄時(shí),需帶上具體的目錄路徑或文件路徑。
2、 在通過(guò)opendir函數(shù)讀取了主目錄后,通過(guò)while循環(huán)來(lái)進(jìn)一步讀取主目錄下的多級(jí)目錄及文件,此處使用的PHP目錄函數(shù)為readdir,此函數(shù) 從目錄中讀取目錄或文件名,當(dāng)沒(méi)有可讀取的目錄或文件時(shí),返回False,注意,讀取的目錄包含.和..,在本實(shí)例教程中由于是一級(jí)級(jí)往下讀取目錄,所以 當(dāng)讀取的目錄信息為.和..時(shí)跳出本次循環(huán),繼續(xù)讀取下一級(jí)目錄。
3、在讀取完主目錄的所有子目錄及文件后,通過(guò)PHP目錄函數(shù)closedir來(lái)關(guān)閉目錄句柄,類(lèi)似于fclose函數(shù)關(guān)閉文件。
第四步:創(chuàng)建讀取(遍歷)目錄及文件的遞歸函數(shù)
<?
function listSubDir($dirInfo,$dirC)
{
if (is_dir($dirInfo)) {
$subDir = dir($dirInfo);
while ($subFile = $subDir->read()) {
if (!strcmp($subFile,".")!strcmp($subFile,"..")) {
continue;
}
$newDir = $dirInfo."/".$subFile;
if (is_file($newDir)) {
echo $dirC.$subFile.":文件屬性<br/>";
}
else{
echo $dirC.$subFile.":目錄屬性<br/>";
listSubDir($newDir,"-".$dirC);
}
}
$subDir->close();
return;
}
else return;
}
?>
說(shuō)明:此函數(shù)有兩個(gè)參數(shù):需要讀取的目錄(包含目錄路徑),顯示用的多級(jí)目錄分隔符。在這個(gè)函數(shù)中主要使用了PHP文件目錄函數(shù)is_dir,is_file,dir類(lèi)。
知識(shí)點(diǎn):
1、首先通過(guò)is_dir來(lái)判斷要讀取的是目錄還是文件,此函數(shù)的參數(shù)和opendir函數(shù)類(lèi)似,注意目錄路徑問(wèn)題。
2、如果判斷需要讀取的是目錄,則通過(guò)dir目錄類(lèi)來(lái)進(jìn)一步讀取其多級(jí)子目錄,層層遞歸。dir類(lèi)所具有的操作函數(shù)功能和opendir、readdir、closedir這些PHP目錄函數(shù)功能一致。
至此整個(gè)創(chuàng)建目錄,讀取目錄的代碼實(shí)例就算完成了,可列出主目錄下的多級(jí)子目錄名及文本文件名。
如何刪除目錄?
刪除目錄可以使用PHP目錄函數(shù)rmdir,函數(shù)的參數(shù)和mkdir函數(shù)參數(shù)類(lèi)似,可以使用相對(duì)目錄路徑或絕對(duì)目錄路徑,只是要?jiǎng)h除的目錄必須為空目錄,通過(guò)上述代碼實(shí)例你完全可以判斷哪些是空目錄。
本文以實(shí)例教程形式講解如何使用PHP文件目錄函數(shù),實(shí)例的主要功能:一、利用PHP目錄函數(shù)創(chuàng)建多個(gè)目錄,二、在目錄下創(chuàng)建文本文件并在文件中寫(xiě)入相關(guān)信息,三、遞歸實(shí)現(xiàn)讀取(遍歷)目錄(文件夾)信息并以列表形式列出目錄下的所有子目錄及文件。
本實(shí)例涉及到文件讀寫(xiě)操作,推薦先查看PHP文件讀寫(xiě)教程。
本實(shí)例目錄結(jié)構(gòu):PHP執(zhí)行文件與leapsoulcn目錄處在同一級(jí),創(chuàng)建的子目錄處在leapsoulcn目錄下。
第一步:使用PHP目錄函數(shù)創(chuàng)建相關(guān)目錄
復(fù)制代碼 代碼如下:
<?
mkdir("leapsoulcn",0777);
mkdir("leapsoulcn/leapsoul",0777);
mkdir("leapsoulcn/php",0777);
mkdir("leapsoulcn/php/web",0777);
mkdir("leapsoulcn/php/web/test",0777);
?>
說(shuō)明:在這段代碼中,先使用PHP目錄函數(shù)mkdir創(chuàng)建主目錄leapsoulcn,并創(chuàng)建了兩個(gè)子目錄,leapsoul及php,在php目錄下創(chuàng)建了web以及test目錄。
知 識(shí)點(diǎn):mkdir主要用來(lái)創(chuàng)建目錄,有兩個(gè)參數(shù):新目錄名(注意創(chuàng)建多級(jí)目錄時(shí),必須包含目錄路徑),新目錄的訪問(wèn)權(quán)限,即umask值,第一個(gè)數(shù)字通常 是0,第二個(gè)數(shù)字指定了所有者特許,第三個(gè)數(shù)字指定了所有者用戶(hù)群的特許 ,第四個(gè)數(shù)字制定了全局特許,可用值如下:
1 = 可執(zhí)行
2 = 可寫(xiě)
4 = 可讀
將三個(gè)數(shù)字加起來(lái),7代表?yè)碛兴袡?quán)限,你可以根據(jù)自己的需要對(duì)創(chuàng)建的新目錄賦予不同的權(quán)限。
第二步:在leapsoulcn/php/目錄下創(chuàng)建leapsoulcn.txt文件,并寫(xiě)入相關(guān)的內(nèi)容
復(fù)制代碼 代碼如下:
<?
@$fp = fopen("leapsoulcn/php/leapsoulcn.txt","w");
if(!$fp){
echo "system error";
exit();
}else {
$fileData = "domain"."\t"."www.jb51.net"."\n";
$fileData = $fileData."deion"."\t"."PHP網(wǎng)站開(kāi)發(fā)教程網(wǎng),面向PHP初學(xué)者的PHP教程網(wǎng)。"."\n";
$fileData = $fileData."title"."\t"."本實(shí)例主要講述PHP目錄函數(shù)的具體應(yīng)用:涵蓋讀取目錄、創(chuàng)建目錄、刪除目錄等功能";
fwrite($fp,$fileData);
fclose($fp);
}
?>
說(shuō)明:這段實(shí)例代碼具體解釋可參考之前介紹的PHP文件寫(xiě)入教程。
第三步:讀取(遍歷)目錄名及文本文件名
復(fù)制代碼 代碼如下:
<?
$dir = opendir("leapsoulcn");
while ($fileDir = readdir($dir)) {
if (!strcmp($fileDir,".")!strcmp($fileDir,"..")) {
continue;
}
echo $fileDir."目錄列表:<br/><br/>";
$subDir = "leapsoulcn/".$fileDir;
$dirC = "->";
listSubDir($subDir,$dirC);
}
closedir($dir);
?>
說(shuō)明:在這段代碼實(shí)例教程中主要使用了PHP目錄函數(shù)opendir(),readdir(),closedir()。
知識(shí)點(diǎn):
1、opendir函數(shù)用來(lái)打開(kāi)所游覽的具體目錄,函數(shù)參數(shù)為目錄名,注意,由于在本實(shí)例教程中PHP執(zhí)行文件和游覽的主目錄處在同一級(jí),所以傳遞的參數(shù)僅僅只是目錄名,如果不在同一級(jí)或讀取多級(jí)目錄時(shí),需帶上具體的目錄路徑或文件路徑。
2、 在通過(guò)opendir函數(shù)讀取了主目錄后,通過(guò)while循環(huán)來(lái)進(jìn)一步讀取主目錄下的多級(jí)目錄及文件,此處使用的PHP目錄函數(shù)為readdir,此函數(shù) 從目錄中讀取目錄或文件名,當(dāng)沒(méi)有可讀取的目錄或文件時(shí),返回False,注意,讀取的目錄包含.和..,在本實(shí)例教程中由于是一級(jí)級(jí)往下讀取目錄,所以 當(dāng)讀取的目錄信息為.和..時(shí)跳出本次循環(huán),繼續(xù)讀取下一級(jí)目錄。
3、在讀取完主目錄的所有子目錄及文件后,通過(guò)PHP目錄函數(shù)closedir來(lái)關(guān)閉目錄句柄,類(lèi)似于fclose函數(shù)關(guān)閉文件。
第四步:創(chuàng)建讀取(遍歷)目錄及文件的遞歸函數(shù)
復(fù)制代碼 代碼如下:
<?
function listSubDir($dirInfo,$dirC)
{
if (is_dir($dirInfo)) {
$subDir = dir($dirInfo);
while ($subFile = $subDir->read()) {
if (!strcmp($subFile,".")!strcmp($subFile,"..")) {
continue;
}
$newDir = $dirInfo."/".$subFile;
if (is_file($newDir)) {
echo $dirC.$subFile.":文件屬性<br/>";
}
else{
echo $dirC.$subFile.":目錄屬性<br/>";
listSubDir($newDir,"-".$dirC);
}
}
$subDir->close();
return;
}
else return;
}
?>
說(shuō)明:此函數(shù)有兩個(gè)參數(shù):需要讀取的目錄(包含目錄路徑),顯示用的多級(jí)目錄分隔符。在這個(gè)函數(shù)中主要使用了PHP文件目錄函數(shù)is_dir,is_file,dir類(lèi)。
知識(shí)點(diǎn):
1、首先通過(guò)is_dir來(lái)判斷要讀取的是目錄還是文件,此函數(shù)的參數(shù)和opendir函數(shù)類(lèi)似,注意目錄路徑問(wèn)題。
2、如果判斷需要讀取的是目錄,則通過(guò)dir目錄類(lèi)來(lái)進(jìn)一步讀取其多級(jí)子目錄,層層遞歸。dir類(lèi)所具有的操作函數(shù)功能和opendir、readdir、closedir這些PHP目錄函數(shù)功能一致。
至此整個(gè)創(chuàng)建目錄,讀取目錄的代碼實(shí)例就算完成了,可列出主目錄下的多級(jí)子目錄名及文本文件名。
如何刪除目錄?
刪除目錄可以使用PHP目錄函數(shù)rmdir,函數(shù)的參數(shù)和mkdir函數(shù)參數(shù)類(lèi)似,可以使用相對(duì)目錄路徑或絕對(duì)目錄路徑,只是要?jiǎng)h除的目錄必須為空目錄,通過(guò)上述代碼實(shí)例你完全可以判斷哪些是空目錄。
通過(guò)應(yīng)用這些基本的PHP目錄函數(shù)及文件操作函數(shù),完全可以實(shí)現(xiàn)和文件系統(tǒng)打交道,自行編寫(xiě)一個(gè)具有創(chuàng)建、刪除目錄、讀取目錄、管理文件的網(wǎng)站目錄文件管理系統(tǒng)。
關(guān)鍵字:PHP、目錄、函數(shù)
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶(hù)
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶(hù)的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無(wú)AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解