先說一下基礎知識:
文件位置如下圖所示:
1、判斷是文件還是目錄
var_dump(filetype("./aa/bb/cc.txt"));
輸出: string(4) "file"
var_dump(filetype("./aa"));
輸出: string(3) "dir"
2、判斷是否是文件(是返回ture)
var_dump(is_file("./aa"));
輸出bool(false)
3、判斷是否是目錄(是返回ture)
var_dump(is_dir("./aa"));
輸出: bool(true)
4、文件的訪問、創建與修改時間
echo date("Y-m-d H:i:s",fileatime("./aa")); //文件的上次訪問時間
filectime("./aa.txt"); //文件的創建時間
echo date("Y-m-d H:i:s",filemtime("./aa.txt")); //文件的修改時間
5、獲取文件大小
filesize("./aa.txt");
6、判斷文件是否存在
file_exists("./aa.txt")
7、服務器的根目錄
echo $_SERVER['DOCUMENT_ROOT'];
輸出:D:/phpStudy/WWW
注意:/代表根,在網頁里面代表www目錄,在PHP里面代表磁盤根
8、路徑
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."
";
}
//關閉目錄資源
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
10、文件整體操作
touch("./aa.txt"); //創建文件
copy("./aa.txt","../aa.txt"); //復制文件
unlink("./aa.txt"); //刪除文件
11、文件內容操作
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代表可操作二進制文件(建議加)
利用遍歷來計算文件夾下所有的個數
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 "給的文件夾不對";
}
}
?>
利用遍歷刪除全部文件
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);
}
}
?>