先說一下基礎知識:php
文件位置以下圖所示:數組
一、判斷是文件仍是目錄服務器
var_dump(filetype("./aa/bb/cc.txt"));
輸出: string(4) "file" url
var_dump(filetype("./aa"));
輸出: string(3) "dir"spa
二、判斷是不是文件(是返回ture)blog
var_dump(is_file("./aa"));
輸出bool(false)資源
三、判斷是不是目錄(是返回ture)get
var_dump(is_dir("./aa"));
輸出: bool(true)string
四、文件的訪問、建立與修改時間it
echo date("Y-m-d H:i:s",fileatime("./aa")); //文件的上次訪問時間 filectime("./aa.txt"); //文件的建立時間 echo date("Y-m-d H:i:s",filemtime("./aa.txt")); //文件的修改時間
五、獲取文件大小
filesize("./aa.txt");
六、判斷文件是否存在
file_exists("./aa.txt")
七、服務器的根目錄
echo $_SERVER['DOCUMENT_ROOT'];
輸出:D:/phpStudy/WWW
注意:/表明根,在網頁裏面表明www目錄,在PHP裏面表明磁盤根
八、路徑
echo basename("./aa/bb/cc.txt"); //獲取路徑中的文件名 echo dirname("../0508/DB.class.php"); //獲取路徑中的文件夾目錄 var_dump(pathinfo("../0508/DB.class.php")); //獲取路徑信息 echo realpath("./aa/bb/cc.txt"); //將相對路徑轉化成絕對路徑
依次輸出:
cc.txt
../0508
array(4) { ["dirname"]=> string(7) "../0508" ["basename"]=> string(12) "DB.class.php" ["extension"]=> string(3) "php" ["filename"]=> string(8) "DB.class" }
D:\phpStudy\WWW\2017-05\0519\aa\bb\cc.txt
9.目錄操做
mkdir("./aa"); //建立目錄 rmdir("./aa"); //刪除目錄,目錄必須爲空 rename("./test","../ceshi"); //移動目錄
第一種遍歷目錄:
var_dump(glob("./aa/bb/*.txt")); //獲取目錄下全部文件
輸出:
array(6) {
[0]=>
string(14) "./aa/bb/cc.txt" [1]=> string(14) "./aa/bb/dd.txt" [2]=> string(14) "./aa/bb/ee.txt" [3]=> string(14) "./aa/bb/ff.txt" [4]=> string(14) "./aa/bb/gg.txt" [5]=> string(14) "./aa/bb/hh.txt" }
第二種遍歷目錄:(重要)
//打開目錄,返回目錄資源 $dname = "./aa/bb"; $dir = opendir($dname); //從目錄資源裏面讀文件,每次讀一個 while($fname = readdir($dir)) { echo $dname."/".$fname."<br>"; } //關閉目錄資源 closedir($dir);
輸出:
./aa/bb/.
./aa/bb/..
./aa/bb/cc.txt
./aa/bb/dd.txt
./aa/bb/ee.txt
./aa/bb/ff.txt
./aa/bb/gg.txt
./aa/bb/hh.txt
十、文件總體操做
touch("./aa.txt"); //建立文件 copy("./aa.txt","../aa.txt"); //複製文件 unlink("./aa.txt"); //刪除文件
十一、文件內容操做
echo file_get_contents("http://www.baidu.com"); //讀取文件 file_put_contents("./aa/bb/hh.txt","hello"); //寫內容 readfile("./11.txt"); //讀取並輸出 var_dump(file("11.txt")); //讀取文件內容,返回數組,每行是一個元素
//打開文件 $f = fopen("./11.txt","a"); //打開文件並寫入 fwrite($f,"wwwww"); //關閉文件 fclose($f);
其中:r只讀;r+讀寫;w寫清空;w+讀寫;a寫入文件末尾;a+讀寫;x建立並以寫入打開;x+建立並以讀寫打開;加一個b表明可操做二進制文件(建議加)
利用遍從來計算文件夾下全部的個數
<?php echo fileCount("./qiyezhan"); function fileCount($fname) { //該文件夾下全部文件數量 $sum = 0; //判斷給的是否是文件夾 if(is_dir($fname)) { //打開文件夾 $dir = opendir($fname); while($wenjian = readdir($dir)) { if($wenjian!="." &&$wenjian!="..") { //文件的完整路徑 $furl = $fname."/".$wenjian; if(is_file($furl)) { $sum++; } else if(is_dir($furl)) { //獲取該文件夾下文件數量,累加 $sum = $sum + fileCount($furl); } } } //關閉文件夾 closedir($dir); return $sum; } else { echo "給的文件夾不對"; } } ?>
利用遍歷刪除所有文件
<?php ShanChu("./qiyezhan"); function ShanChu($fname) { if(is_dir($fname)) { //在刪除以前,把裏面的文件所有刪掉 $dir = opendir($fname); while($dname = readdir($dir)) { //必須加這一項,否則可能會將整個磁盤給刪掉 if($dname!="." && $dname!="..") { $durl = $fname."/".$dname; if(is_file($durl)) { unlink($durl); } else { ShanChu($durl); } } } closedir($dir); //刪除該文件夾 rmdir($fname); } else { //若是是文件,直接刪掉 unlink($fname); } } ?>