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


先說一下基礎知識:

文件位置如下圖所示:

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."<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

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代表可操作二進制文件(建議加)

 

利用遍歷來計算文件夾下所有的個數

<?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);
	}
}


?>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM