當前位置:首頁 » 文件管理 » php遞歸文件夾

php遞歸文件夾

發布時間: 2022-04-25 05:55:23

php 遞歸讀取文件夾內所有文件報錯

你沒有去除目錄下的"."和「..」的情況,還有就是你is_dir里那個參數判斷有問題,你參數路徑不完整,然後就是你的$file沒有全局。

"."是上一級目錄,".."是當前目錄,循環到這兩個的時候就陷入死循環了,你有再大的空間也不夠。

修改後的方法是:

functionGetAllFileByDir($fileDir)
{
global$num,$files;
$MyArry=scandir($fileDir);
for($j=0;$j<count($MyArry);$j++)
{
if($MyArry[$j]!="."&&$MyArry[$j]!=".."&&is_dir($fileDir."/".$MyArry[$j]))
{
GetAllFileByDir($fileDir."/".$MyArry[$j]);
}
elseif($MyArry[$j]!="."&&$MyArry[$j]!="..")
{
$files[$num]=$MyArry[$j];
$num++;
}
}
}
GetAllFileByDir("d:/test");
if(count($files)>0)
{
for($s=0;$s<count($files);$s++)
{
echo$files[$s]."<br/>";
}
}

Ⅱ php上傳文件,創建遞歸目錄的實例代碼

復制代碼
代碼如下:
<?php
$uid=$_REQUEST['uid'];
$avatar
=
'D:/avic/discuz/uc_server/data/avatar/'.get_avatar($uid,
$size,
$type);
$dir=dirname($avatar);
//創建目錄成功後移動臨時文件
if(mkdirs($dir)){
if($_FILES["pic"]["error"]
>=
0){
if(move_uploaded_file($_FILES['pic']['tmp_name'],$avatar)){
$errorcode=1;
}else{
$errorcode=0;
$errormsg="文件移動失敗";
}
}else{
$errorcode=0;
$errormsg=$_FILES['pic']['error'];
}
}
$back=array("errorcode"=>$errorcode,'errormsg'=>$errormsg);
echo
json_encode($back);
//返回圖片要存儲的路徑
function
get_avatar($uid,
$size
=
'middle',
$type
=
'')
{
$size
=
in_array($size,
array('big',
'middle',
'small'))
?
$size
:
'middle';
$uid
=
abs(intval($uid));
$uid
=
sprintf("%09d",
$uid);
$dir1
=
substr($uid,
0,
3);
$dir2
=
substr($uid,
3,
2);
$dir3
=
substr($uid,
5,
2);
$typeadd
=
$type
==
'real'
?
'_real'
:
'';
return
$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid,
-2).$typeadd."_avatar_$size.jpg";
}
//遞歸創建目錄,若傳的$dir不是絕對路徑,則會和運行此方法的目錄同級
function
mkdirs($dir){
if(!is_dir($dir)){
if(!mkdirs(dirname($dir))){
return
false;
}
if(!mkdir($dir,0777)){
return
false;
}
}
return
true;
}
?>

Ⅲ PHP遍歷輸出文件夾內的所有文件用遞歸演算法

一般來說,類似這種遍歷輸出所有文件,大多採用遞歸演算法,這樣程序顯得比較簡潔,其實際執行效率來說,並不見得比其他方法更好。

以下是示例:

function file_list($path)
{
if ($handle = opendir($path))//打開路徑成功
{
while (false !== ($file = readdir($handle)))//循環讀取目錄中的文件名並賦值給$file
{
if ($file != "." && $file != "..")//排除當前路徑和前一路徑
{
if (is_dir($path."/".$file))
{
// echo $path.": ".$file."<br>";//去掉此行顯示的是所有的非目錄文件
file_list($path."/".$file);
}
else
{
echo $path.": ".$file."<br>";
}
}
}
}
}

Ⅳ php遞歸遍歷文件夾,展現形式為數組的函數

這個不好說,有橫向遍歷和縱向遍歷,看你的需要,橫向遍歷要用到棧的知識,縱向就用遞歸就行(把數組給一個函數,函數判斷數組裡面的值,是不是數組,是數組就繼續給自己這個數組,不是的話就輸出到目標數組)

Ⅳ php關於遞歸創建練級目錄,為什麼少輸出一個目錄

if(!file_exists(dirname($path))){//判斷上一級目錄是否存在
//mkdir($path,0777,true);
//echo 'yes';
check(dirname($path));//當返回到./當前目錄時存在,那麼依次進行下一步創建文件夾操作
mkdir(dirname($path),0777);
}
改為
if(!file_exists(dirname($path))){//判斷上一級目錄是否存在
//mkdir($path,0777,true);
//echo 'yes';
check(dirname($path));//當返回到./當前目錄時存在,那麼依次進行下一步創建文件夾操作
}
mkdir(dirname($path),0777);

Ⅵ php中遞歸方法刪除非空目錄和文件,雖然網上有很多代碼,但大多數都有錯誤,我也不會改

啥意思?就是刪除 目錄和文件是吧?
//刪除文件夾及其文件夾下所有文件
function deldir($dir) {
//先刪除目錄下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
deldir($fullpath);
}
}
}
closedir($dh);
//刪除當前文件夾:
if(rmdir($dir)) {
echo '刪除成功';
} else {
echo '刪除失敗';;
}
}

Ⅶ php獲得文件夾下所有文件的遞歸演算法的簡單實例

如下所示:
function
my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!="."
&&
$file!="..")
{
if(is_dir($dir."/".$file))
{
$files[$file]=my_scandir($dir."/".$file);
}
else
{
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return
$files;
}
}
}
以上就是小編為大家帶來的php獲得文件夾下所有文件的遞歸演算法的簡單實例全部內容了,希望大家多多支持腳本之家~

Ⅷ 關於php遞歸函數創建級聯目錄的困惑

mkdir1剛進去就是判斷$dir存不存在,a/b/c/d/e說白了就是判斷有沒有e文件夾
如果沒有 繼續dirname($dir) 判斷a/b/c/d路徑的d文件夾有沒有
如果沒有 繼續dirname($dir) 判斷a/b/c路徑的c文件夾有沒有
依此類推直到
dirname($dir) 判斷a路徑的時候 不存在執行當前遞歸層的mkdir($dir) 創建a
存在則return,然後執行當前遞歸層上一級的mkdir($dir) 創建a/b
之後繼續上一級的mkdir($dir) 創建a/b/c
直到創建完a/b/c/d/e 遞歸結束

Ⅸ php遞歸刪除目錄與文件的方法

本文實例講述了php遞歸刪除目錄與文件的方法。分享給大家供大家參考。具體實現方法如下:
<?php
function
deldir($path){
$dh
=
opendir($path);
var_mp(readdir($dh));
while(($d
=
readdir($dh))
!==
false){
if($d
==
'.'
||
$d
==
'..'){//如果為.或..
continue;
}
$tmp
=
$path.'/'.$d;
if(!is_dir($tmp)){//如果為文件
unlink($tmp);
}else{//如果為目錄
deldir($tmp);
}
}
closedir($dh);
rmdir($path);
}
$path
=
"./e";
deldir($path);
?>
希望本文所述對大家的PHP程序設計有所幫助。

Ⅹ php怎麼實現遞歸ftp伺服器上的文件內容

FTP有專門的工具,直接綁定帳號就可以上傳內容的,不用PHP寫。如果真要PHP寫那就只能循環讀取與上傳文件了。

熱點內容
關鍵行動安卓如何下載 發布:2024-11-08 23:56:59 瀏覽:58
大便壓縮小 發布:2024-11-08 23:52:37 瀏覽:292
墨刀資料庫 發布:2024-11-08 23:51:10 瀏覽:306
javaget亂碼 發布:2024-11-08 23:41:56 瀏覽:81
空文件python 發布:2024-11-08 23:38:08 瀏覽:487
取消網路訪問密碼 發布:2024-11-08 23:34:09 瀏覽:730
在我的世界伺服器中怎麼設置血月 發布:2024-11-08 23:30:07 瀏覽:630
安卓機如何設置自動錄音 發布:2024-11-08 23:27:56 瀏覽:310
怎麼打開加密壓縮包 發布:2024-11-08 23:26:43 瀏覽:721
安卓91視頻可以在哪裡下載 發布:2024-11-08 23:26:42 瀏覽:50