PHP怎么進(jìn)行文件與目錄操作?下面本篇文章帶大家深入了解HP文件與目錄操作,希望對(duì)大家有所幫助!
路徑與磁盤操作
相對(duì)路徑和絕對(duì)路徑
絕對(duì)路徑:以當(dāng)前文件所在盤符為起點(diǎn)的路徑
舉個(gè)例子:
例如圖片1.png
這個(gè)圖片的絕對(duì)路徑就是
D:谷歌1231.png
我們來(lái)分開(kāi)講解一下這一串路徑代表的內(nèi)容
- D:(指的是盤符
- (帶表的是目錄分隔符
- 提示:(windows操作系統(tǒng)支持正斜線和反斜線,其它系統(tǒng)支持正斜線/,所以正斜線可以減少兼容性問(wèn)題)
相對(duì)路徑:以操作的文件所在的目錄為起點(diǎn)的路徑
這是一個(gè)
相對(duì)的概念
,不同的參照物寫的所對(duì)應(yīng)的路徑也不相同
為什么這么說(shuō)的
舉個(gè)例子吧:
假設(shè)我們以 1.png作為參照物
- 1.txt
-
./1.txt
(1前面有個(gè) 點(diǎn).) - 2.txt
-
../2.txt
(2前面兩個(gè)點(diǎn))解釋一下吧
- 1.txt作為同級(jí)目錄下的文件,所以前面只需要1個(gè)點(diǎn),這一個(gè)點(diǎn)就代表當(dāng)前目錄
- 2.txt作為下層目錄,1.png就是2.txt的上層目錄,這里兩個(gè)點(diǎn)就代表上層目錄
-
相信大家已經(jīng)了解了相對(duì)路徑和絕對(duì)路徑
文件路徑信息獲取
在這之前我們需要先理解一些概念
路徑:
/love/xianyu.txt
- 目錄名(dirname)為/love
- 帶有文件拓展名(basename)為 xianyu.txt
- 拓展名(extension)為.txt
- 文件名(filename)為 xianyu
下面進(jìn)入正文
pathinfo()
為了獲取
指定的路徑和文件名
,可以使用pathinfo()
函數(shù),這個(gè)函數(shù)會(huì)·返回一個(gè)關(guān)聯(lián)數(shù)組
<?php $xianyu = "/love/xianyu.php"; $result = pathinfo($xianyu); foreach($result as $key=>$value){ echo "$key=>$valuen"; } ?> /* 輸出: dirname=>/love basename=>xianyu.php extension=>php filename=>xianyu */
了
basename()
函數(shù),快速獲取指定文件
的文件名
部分,不用從數(shù)組
中讀取
<?php $xianyu = "/love/xianyu.php"; echo $filepath."中的文件名是:".basename($xianyu); ?> /* 中的文件名是:xianyu.php */
使用
dirname()
函數(shù),可以快速獲取指定文件
的目錄
部分
<?php $filepath = "/love/xianyu.php"; echo $filepath."中的路徑部分是:". dirname($filepath); ?> /* /love/xianyu.php中的路徑部分是:/love */
目錄操作
打開(kāi)和關(guān)閉目錄
句柄:
-
opendir() , closedir()
句柄可以被認(rèn)為是一個(gè)
返回值
,有了句柄就可以對(duì)打開(kāi)的目錄進(jìn)行操作
<?php $dir = "images"; if($dir_handle = opendir($dir)) { echo "獲取目錄句柄成功!"; closedir($dir_handle); //記得釋放句柄 } else { echo "打開(kāi)目錄錯(cuò)誤"; } ?>
打開(kāi)images目錄
-
釋放句柄
為什么要釋放句柄呢,如果不釋放句柄就好比你和一堆人用一個(gè)筆記本寫字,你拿走了不放回去別人就無(wú)法寫字 所以釋放句柄可以節(jié)省服務(wù)器資源
創(chuàng)建目錄
<?php mkdir("123") ?>
刪除目錄
<?php rmdir("123") ?>
獲取當(dāng)前工作目錄
<?php echo getcwd() ?>
改變當(dāng)前工作目錄
<?php echo getcwd() . '<br>'; // 顯示當(dāng)前目錄 chdir('hhh'); //改變當(dāng)前目錄 echo getcwd() . '<br>'; // 顯示當(dāng)前目錄 ?>
獲取目錄句柄條目
-
readdir()
將一個(gè)參數(shù)名作為參數(shù)傳遞給函數(shù)
readdir()
,這個(gè)函數(shù)能返回目錄下所有子目錄和文件
注意:調(diào)用一次返回一個(gè)!!
<?php if ($handle = opendir('.')) { while (false !== ($file = readdir($handle))) { echo "$filen"; } closedir($handle); } ?>
讀取目錄條目
-
scandir()
直接返回
指定目錄下
的文件和子目錄
,并且按照要求排序(默認(rèn)字母升序)
<?php $dir1 = scandir("D:新建文件夾 (2)"); $dir2 = scandir("D:新建文件夾 (2)",1);//降序排列 print_r($dir1); print_r($dir2) ?>
文件操作
操作文件的一般步驟即:打開(kāi),讀取或?qū)懭?,關(guān)閉
由于目錄和文件本質(zhì)上都屬于文件
,除了使用函數(shù)不同,很多操作都是相通的
判斷文件是否存在
<?php if(file_exists("test.txt")) { //如果文件存在就執(zhí)行操作 } ?> //如果文件存在返回true,不存在返回false
創(chuàng)建,打開(kāi),關(guān)閉文件
-
fopen(), fclose()
<?php //以只讀方式打開(kāi)文件,將文件指針指向文件頭 $handle = fopen("test.txt", "r"); //以讀寫方式打開(kāi),將文件指針指向文件頭 $handle = fopen("test.txt", "r+"); //以寫入方式打開(kāi),將文件指針指向文件頭,并將文件大小截為0。如果文件不存在則嘗試創(chuàng)建。 $handle = fopen("test.txt", "w"); //以讀寫方式打開(kāi),將文件指針指向文件頭,并將文件大小截為0。如果文件不存在則嘗試創(chuàng)建。 $handle = fopen("test.txt", "w+"); //以寫入方式打開(kāi)文件,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建。 $handle = fopen("test.txt", "a"); //以讀寫方式打開(kāi)文件,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建。 $handle = fopen("test.txt", "a+"); fclose() ?>
讀取文件
-
fread(), file_get_contents(), file()
<?php //需要使用fopen,fread,fclose來(lái)進(jìn)行文件的讀取操作 $filename = "test.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); //fread需要傳入兩個(gè)參數(shù),第一個(gè)參數(shù)為 文件句柄,第二個(gè)參數(shù)為最大讀取的字節(jié)數(shù) fclose($handle); //更加簡(jiǎn)潔的方式 file_get_contents($filename) ?>
寫入文件
-
fwrite(), file_put_contents()
<?php //需要fopen,fwrite,fclose來(lái)進(jìn)行文件的寫入操作 $handle = fopen("test.txt","w"); fwrite($handle,"添加文字到文件中");//fwrite接受兩個(gè)參數(shù)作為輸入,$handle為文件句柄,"添加文 字到文件中"為需要寫入的內(nèi)容 fclose($handle); //更加簡(jiǎn)潔的方式 file_put_contents("test.txt", "使用file_put_contents()函數(shù)寫入的內(nèi)容") ?>
刪除文件
-
unlink()
<?php $file = "temp.txt"; unlink($file); ?>
復(fù)制文件
-
copy()
<?php $sourceFile = "html/cache.txt"; //被復(fù)制的文件必須確保存在 $targetFile = "html/copyCache.txt"; copy($sourceFile, $targetFile) ?>
移動(dòng),重命名文件或目錄
-
rename()
<?php //使用rename()函數(shù)重命名一個(gè)文件或目錄 rename('test.txt', 'rename.txt') //將test.txt文件重命名為rename.txt rename('test','rename') //將test目錄重命名為rename //使用rename()函數(shù)移動(dòng)文件,并改名 rename("test.txt","test/a.txt");//將test.txt移動(dòng)到test文件夾下,并改名為a.txt //使用rename()函數(shù)移動(dòng)目錄到目標(biāo)目錄 rename("test","html/test"); ?>
推薦學(xué)習(xí):《PHP視頻教程》