如何用PHP遍歷文件數目 或刪除目錄下的所有文件?

先說一下基礎知識: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);
	}
}


?>
相關文章
相關標籤/搜索