搜索目錄里所有文件(包括子目錄)


搜索目錄里所有文件(包括子目錄)


資料來源:http://www.cnblogs.com/jjwwww/archive/2004/09/04/39559.aspx

用到兩個函數ParseDirectory 和CreatePathList


None.gifvoid?ParseDirectory(string?path,?string?filter)
ExpandedBlockStart.gifContractedBlock.gif????????????????
dot.gif{????
InBlock.gif????????????????????
string[]?dirs?=?Directory.GetDirectories(path);//得到子目錄
InBlock.gif
????????????????????IEnumerator?iter?=?dirs.GetEnumerator();
InBlock.gif????????????????????
while(iter.MoveNext())
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????????
dot.gif{
InBlock.gif????????????????????????
string?str?=?(string)(iter.Current);
InBlock.gif????????????????????????ParseDirectory(str,?filter);
ExpandedSubBlockEnd.gif????????????????????}

InBlock.gif????????????????????
string[]?files?=?Directory.GetFiles(path,?filter);
InBlock.gif????????????????????
if(files.Length?>?0)
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????????
dot.gif{
InBlock.gif????????????????????????m_numFiles?
+=?files.Length;
InBlock.gif????????????????????????m_pathList.Add(files);
ExpandedSubBlockEnd.gif????????????????????}

ExpandedBlockEnd.gif}

None.gifstring[]?CreatePathList()
ExpandedBlockStart.gifContractedBlock.gif????????????????
dot.gif{
InBlock.gif????????????????????
if(m_numFiles?<=?0)
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????????
dot.gif{
InBlock.gif????????????????????????
return?null;
ExpandedSubBlockEnd.gif????????????????????}

InBlock.gif
InBlock.gif????????????????????
string[]?str?=?new?string[m_numFiles];
InBlock.gif????????????????????
int?index?=?0;
InBlock.gif
InBlock.gif????????????????????
try
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????????
dot.gif{
InBlock.gif????????????????????????IEnumerator?pathIter?
=?m_pathList.GetEnumerator();
InBlock.gif????????????????????????
while(pathIter.MoveNext())
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????????????
dot.gif{
InBlock.gif????????????????????????????
string[]?ar?=?(string[])(pathIter.Current);
InBlock.gif????????????????????????????IEnumerator?fileIter?
=?ar.GetEnumerator();
InBlock.gif????????????????????????????
while(fileIter.MoveNext())
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????????????????
dot.gif{
InBlock.gif????????????????????????????????str[index]?
=?(string)(fileIter.Current);
InBlock.gif????????????????????????????????
++index;
ExpandedSubBlockEnd.gif????????????????????????????}

ExpandedSubBlockEnd.gif????????????????????????}

ExpandedSubBlockEnd.gif????????????????????}

InBlock.gif????????????????????
catch(Exception?e)
ExpandedSubBlockStart.gifContractedSubBlock.gif????????????????????
dot.gif{
InBlock.gif????????????????????????
return?null;
ExpandedSubBlockEnd.gif????????????????????}

InBlock.gif
InBlock.gif????????????????????
return?str;
ExpandedBlockEnd.gif????????????????}



#?非遞歸實現re: 搜索目錄里所有文件(包括子目錄)

void ParseDirectory(string path, string filter)
{
Queue q=new Queue();
q.Enqueue(path);
while(q.Count > 0) {
string path=(string)q.Dequeue();
string[] files = Directory.GetFiles(path,filter);
if(files.Length > 0) {
m_numFiles += files.Length;
m_pathList.Add(files);
}

string[] dirs = Directory.GetDirectories(path);
foreach(string dir in dirs){
q.Enqueue(dir);
}
}
}







使用范例:如果要查找的:d目錄下所有mp3文件
None.gif
None.gif
string?path="d:\\";????//目錄名 也可以用相當路徑
None.gif
string?filter="*.mp3";????????//文件類型
None.gif
?int?m_numFiles=0;????????//文件總數
None.gif
?ArrayList?m_pathList?=?new?ArrayList();//包含所有文件路徑的數組None.gif
None.gif
string[]?files;????????????//所有文件名
None.gif
????????????????
None.gifParseDirectory(path,?
"*.mp3");
None.giffiles
=CreatePathList();????????//生成文件名數組
None.gif
????????????????if(files?==?null)
ExpandedBlockStart.gifContractedBlock.gif????????????????
dot.gif{
InBlock.gif????????????????????
throw?new?Exception(String.Concat("No?file?found?in?",?path));
ExpandedBlockEnd.gif????????????????}

None.gif




轉載于:https://www.cnblogs.com/soldier/archive/2004/09/06/40148.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277369.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277369.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一張圖理解buffer與cache

轉載于:https://blog.51cto.com/11193863/2169166

oracle服務器不識別tc服務,記一次ORACLE無法啟動登陸事故

打開XSHELL 登陸ORACLE用戶1.sqlplus scott/scott 提示登陸失敗2.sqplus / as sysdba 啟動數據庫提示3.查找日志操作日志&#xff1a;$ORACLE_HOME/startup.log啟動日志&#xff1a;$ORACLE_BASE/diag/rdbms/ora11g/ora11g/trace/alert_ora11g.log (ora11g為SID值)啟動日志如果…

重構(Refactoring)技巧讀書筆記 之二

重構&#xff08;Refactoring&#xff09;技巧讀書筆記 之二<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />General Refactoring Tips, Part 2本文繼續《重構&#xff08;Refactoring&#xff09;技巧讀書筆記 之一》&#xff…

史上最全的Angular.js 的學習資源

Angular.js 的一些學習資源 基礎 官方&#xff1a; http://docs.angularjs.org angularjs官方網站已被墻&#xff0c;可看 http://www.ngnice.com/&#xff1b;官方zip下載包 http://best.factj.com/dolymood/angular-packages&#xff0c;已增加docs服務&#xff0c;輸入地址即…

BMP位圖之8位位圖(三)

起始結構 typedef struct tagBITMAPFILEHEADER { WORD bfType; //類型名&#xff0c;字符串“BM”&#xff0c; DWORD bfSize; //文件大小 WORD bfReserved1; //保留字 WORD bfReserved2; //保留字 DWORD bfOffBits; //實際位圖數據的偏移字節數&#xff0c;即前三個部分長度之…

DNN 漢化中的問題????

今天看到了一份已經漢化過的DNN但是比較奇怪&#xff0c;當第一次運行后我所指定的新數據庫中并沒有添加新的內容&#xff0c;但是網站上的確是已經漢化過了的&#xff0c;不知道它把漢化的內容放到了哪里&#xff1f;&#xff1f;&#xff1f; 另外他所漢化界面的地方&#x…

php 打印對象詳細信息,php打印顯示數組與對象的函數詳解

php打印顯示數組與對象的函數詳解發布于 2014-11-17 18:55:49 | 699 次閱讀 | 評論: 0 | 來源: 網友投遞PHP開源腳本語言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點&…

ios開發-調用系統自帶手勢

在 iPhone 或 iPad 的開發中&#xff0c;除了用 touchesBegan / touchesMoved / touchesEnded 這組方法來控制使用者的手指觸控外&#xff0c;也可以用 UIGestureRecognizer 的衍生類別來進行判斷。用 UIGestureRecognizer 的好處在于有現成的手勢&#xff0c;開發者不用自己計…

Node.js 事件循環

Node.js 事件循環 Node.js 是單進程單線程應用程序&#xff0c;但是因為 V8 引擎提供的異步執行回調接口&#xff0c;通過這些接口可以處理大量的并發&#xff0c;所以性能非常高。 Node.js 幾乎每一個 API 都是支持回調函數的。 Node.js 基本上所有的事件機制都是用設計模式中…

全國翻譯專業資格(水平)考試

http://www.spta.gov.cn/moreksxx.jsp?lmCodeA02010205轉載于:https://www.cnblogs.com/Danilo/archive/2004/10/31/58821.html

linux文件句柄,【LINUX】使用lsof處理文件恢復、句柄以及空間釋放問題

曾經在生產上遇到過一個df 和 du出現的結果不一致的問題&#xff0c;為了排查到底是哪個進程占用了文件句柄&#xff0c;導致空間未釋放&#xff0c;首先在linux上面&#xff0c;一切皆文件&#xff0c;這個問題可以使用lsof這個BT的命令來處理(這個哈還可以來查詢文件句柄泄露…

android天氣查詢(二)之網絡json數據的獲取

前面一篇文章介紹了如何使用ksoap獲取天氣信息&#xff0c;但是使用的網絡資源受到了限制&#xff0c;所以我們這里會采用第二種方法&#xff0c;可以無限制的獲取。http://m.weather.com.cn/data/101010100.html 但是對應的101010100(北京)我們怎么獲取呢&#xff0c;還有就是…

累.....

今天我真的蔫了&#xff0c;好累&#xff0c;腦子也好濁&#xff0c;但是還好&#xff0c;最終達到了預期的目的。我終于把henry的dataGrid實現了&#xff0c;犯了低級錯誤&#xff0c;和好多人討論&#xff0c;但最終還是henry解決的。那一刻&#xff0c;真的好爽&#xff0c;…

001-pro ant design 升級2.0后變更

一、更新點 1、目錄調整 2、本地代理服務器調整 roadhog→umi 配置方式 在這個config/config.js配置 "proxy": { "/api": { "target": "http://jsonplaceholder.typicode.com/", "changeOrigin": true, "pathRewrite&q…

linux cp 時 略過文件,CentOS下執行cp命令式提示略過文件夾

今天在CentOS下復制一個文件夾到另一個文件夾的時候cp ./res /usr 的時候出現了問題&#xff0c;提示我的是&#xff1a;cp略過了文件夾后來我找了一下在網上search了一下CP命令的用法&#xff1a;CP命令該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中&#xff0c;同…

屬性頁中的ON_UPDATE_COMMAND_UI

我前面翻譯了一篇文章簡單的談了一下在對話框處理ON_UPDATE_COMMAND_UI 消息。又在www.codeguru.com上看到在屬性頁中處理ON_UPDATE_COMMAND_UI 消息的方法和在對話框中稍有不同。兩者的處理大體上一樣。只是在屬性頁中還需要一個步驟。需要從CPropertySheet派生類&#xff0c;…

linux基礎命令rpm,rpm常用命令集合1

提要&#xff1a;RPM 是 Red Hat Package Manager 的縮寫&#xff0c;原意是Red Hat 軟件包管理&#xff1b;本文介紹RPM&#xff0c;并結合實例來解說RPM手工安裝、查詢等應用&#xff1b;正文&#xff1a;RPM包管理的用途&#xff1b;1、可以安裝、刪除、升級和管理軟件&…

hibernate詳解

Hibernate原理與應用 主要內容 1、引入 2、安裝配置 3、基本概念和CURD 4、HQL和Criteria 5、關聯映射 6、繼承映射 7、集合映射 8、懶加載 9、緩存 10、事務 11、其他 12、Hibernate不適合的場景 13、與JPA的集成(annotation方式) 14、最佳實踐 1、引入 模型不匹配(阻抗不匹配…

Csharp+Asp.net系列教程(四)

邁克老貓 來自&#xff1a;老貓的理想 本教程參考C#和ASP.NET程序設計教程撰寫&#xff0c;有什么不足之處請大家指出&#xff0c;或在老貓的理想BLOG留言。 這次簡述一下操作符 1.算術操作符 算術操作符包括加()、減(-)、乘(*)、除(/)和求余(%)。加減操作符…

linux 腳本 寫更新,用Shell寫的游戲客戶端更新腳本

#!/bin/sh########################################### 客戶端版本更新系統########################################### CLIENT_INIT_VERSION 客戶端新版本&#xff0c;默認是0# CLIENT_OLD_VERSION 客戶端舊版本(存放在VERSION_FILE指定的文件中)&#xff0c;當沒有時取CL…