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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/10 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 搜索目录里所有文件(包括子目录) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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


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

用到兩個函數(shù)ParseDirectory 和CreatePathList


void?ParseDirectory(string?path,?string?filter)
????????????????
{????
????????????????????
string[]?dirs?=?Directory.GetDirectories(path);//得到子目錄
????????????????????IEnumerator?iter?=?dirs.GetEnumerator();
????????????????????
while(iter.MoveNext())
????????????????????
{
????????????????????????
string?str?=?(string)(iter.Current);
????????????????????????ParseDirectory(str,?filter);
????????????????????}

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

}

string[]?CreatePathList()
????????????????
{
????????????????????
if(m_numFiles?<=?0)
????????????????????
{
????????????????????????
return?null;
????????????????????}


????????????????????
string[]?str?=?new?string[m_numFiles];
????????????????????
int?index?=?0;

????????????????????
try
????????????????????
{
????????????????????????IEnumerator?pathIter?
=?m_pathList.GetEnumerator();
????????????????????????
while(pathIter.MoveNext())
????????????????????????
{
????????????????????????????
string[]?ar?=?(string[])(pathIter.Current);
????????????????????????????IEnumerator?fileIter?
=?ar.GetEnumerator();
????????????????????????????
while(fileIter.MoveNext())
????????????????????????????
{
????????????????????????????????str[index]?
=?(string)(fileIter.Current);
????????????????????????????????
++index;
????????????????????????????}

????????????????????????}

????????????????????}

????????????????????
catch(Exception?e)
????????????????????
{
????????????????????????
return?null;
????????????????????}


????????????????????
return?str;
????????????????}



#?非遞歸實現(xiàn)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文件

string?path="d:\\";????//目錄名 也可以用相當(dāng)路徑
string?filter="*.mp3";????????//文件類型
?int?m_numFiles=0;????????//文件總數(shù)
?ArrayList?m_pathList?=?new?ArrayList();//包含所有文件路徑的數(shù)組
string[]?files;????????????//所有文件名
????????????????
ParseDirectory(path,?
"*.mp3");
files
=CreatePathList();????????//生成文件名數(shù)組
????????????????if(files?==?null)
????????????????
{
????????????????????
throw?new?Exception(String.Concat("No?file?found?in?",?path));
????????????????}





轉(zhuǎn)載于:https://www.cnblogs.com/soldier/archive/2004/09/06/40148.html

總結(jié)

以上是生活随笔為你收集整理的搜索目录里所有文件(包括子目录)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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