日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码

發(fā)布時(shí)間:2024/9/19 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在MFC中沒有提供API函數(shù)刪除非空文件夾 A(目錄),所以要想刪除一個(gè)非空文件夾(目錄)必須先刪除里面的文件。

這里需要注意一個(gè)問題,如果非空文件夾(目錄)下還有文件夾(目錄)AA:

1、如果文件夾 AA是空的,那就好辦,直接RemoveDirectory()搞定。

2、如果 AA不是空的呢?......如果你想得比較深一點(diǎn)的話,應(yīng)該會(huì)想到,萬一 AA還有AAA,AAA還有AAAA呢?...有點(diǎn)恐怖,╮(╯3╰)╭

是的,你此刻應(yīng)該想到了遞歸吧,好的,遞歸先暫時(shí)不管,回到正題。

目的還是只有一個(gè),刪除非空文件夾 A!!!

既然如此,那么我們還是只好寫一個(gè)小小的算法刪除里面的數(shù)據(jù)噢,對(duì)的,就是你剛才想到的遞歸!:-)

下面是網(wǎng)上很流行的一個(gè)思路及其代碼:(不是我寫的 :-) )

1 //刪除文件夾目錄(非空)2 boolDeleteDirectory(char*sDirName)3 {4 CFileFind tempFind;

5 charsTempFileFind[MAX_PATH] ;6 7 sprintf(sTempFileFind,"%s\\*.*",sDirName);8 BOOL IsFinded=tempFind.FindFile(sTempFileFind);9 while(IsFinded)10 {11 IsFinded=tempFind.FindNextFile();12 13 if(!tempFind.IsDots())14 {15 charsFoundFileName[MAX_PATH];16 strcpy(sFoundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));17 18 if(tempFind.IsDirectory())19 {20 charsTempDir[MAX_PATH];21 sprintf(sTempDir,"%s\\%s",sDirName,sFoundFileName);22 DeleteDirectory(sTempDir);//嵌套函數(shù)23 }24 else25 {26 charsTempFileName[MAX_PATH];27 sprintf(sTempFileName,"%s\\%s",sDirName,sFoundFileName);28 DeleteFile(sTempFileName); // DeleteFile(sTempFileName)貌似也行的29 }30 }31 }32 tempFind.Close();33 if(!RemoveDirectory(sDirName))34 {35 returnFALSE;36 }37 returnTRUE;38 }

函數(shù)說明:

1、要?jiǎng)h除的目錄通過參數(shù)char * sDirName傳遞進(jìn)去,可以是相對(duì)路徑的,比如“.\\tmp”;

2、FindFile 函數(shù)是用來查找是否在指定的目錄A 下存在子文件Aa 及文件夾AA,當(dāng)找到返回真;

3、FindNextFile MSDN中的返回值定義是:Nonzero indicates success. Zero indicates failure. To get extended error information, call . If no matching files can be found, the GetLastError function returns ERROR_NO_MORE_FILES.(很多XXNextXX函數(shù)都是先要XXFirstXX一次的,這里是FindFile 算例外麼?)

4、IsDots 函數(shù),熟悉dos 環(huán)境的童鞋都知道一個(gè)目錄下存在“.”和“..”(還沒想起麼?自己去輸入一個(gè)“dir”命令看看就知道了),“.”代表上一層目錄,“..”代表本層目錄。所以呢在查找文件的時(shí)候應(yīng)首先過濾掉這兩個(gè)特殊目錄。如果你逐步調(diào)試這個(gè)函數(shù)的時(shí)候你會(huì)發(fā)現(xiàn)每進(jìn)一個(gè)新的目錄查找都會(huì)首先多執(zhí)行兩次if(!tempFind.IsDots)。

5、RemoveDirectory 函數(shù)只能刪除空文件夾,最后記得調(diào)用一次才能保證完成任務(wù)。

ps:我不記得代碼是在哪里找的了,我在這里感謝無私的作者! :-)

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的php函数删除非空目录,删除文件夹(非空目录)及其中所有文件的思路及源代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。