招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學(xué)習(xí)專區(qū) > .NET技術(shù) > 遍歷系統(tǒng)所有文件的兩種方法(遞歸遍歷/堆棧遍歷)

遍歷系統(tǒng)所有文件的兩種方法(遞歸遍歷/堆棧遍歷)

2014-04-28 12:00:10
來源:
[導(dǎo)讀] A 遞歸方法using System;public class RecursiveFileSearch{static System Collections Specialized StringCollection log = new S
A.遞歸方法

using System;

public class RecursiveFileSearch

{

static System.Collections.Specialized.StringCollection log = new System.Collections.Specialized.StringCollection();

static void Main()

{

// 檢測(cè)邏輯盤符

string[] drives = System.Environment.GetLogicalDrives();

foreach (string dr in drives)

{

System.IO.DriveInfo di = new System.IO.DriveInfo(dr);

//跳過沒有就緒的盤

if (!di.IsReady)

{

Console.WriteLine("The drive {0} could not be read", di.Name);

continue;

}

System.IO.DirectoryInfo rootDir = di.RootDirectory;

WalkDirectoryTree(rootDir);//遞歸

}

// 未能成功瀏覽的文件(權(quán)限不夠等原因)

Console.WriteLine("拒絕訪問的有:");

foreach (string s in log)

{

Console.WriteLine(s);

}

Console.ReadKey();

}

static void WalkDirectoryTree(System.IO.DirectoryInfo root)

{

System.IO.FileInfo[] files = null;

System.IO.DirectoryInfo[] subDirs = null;

//遍歷目錄下的所有文件夾

try

{

files = root.GetFiles("*.*");

}

//拒絕訪問導(dǎo)致的異常

catch (UnauthorizedAccessException e)

{

log.Add(e.Message);

}

//文件殘缺

catch (System.IO.DirectoryNotFoundException e)

{

Console.WriteLine(e.Message);

}

if (files != null)

{

foreach (System.IO.FileInfo fi in files)

{

//打印本目錄下所有文件名(不含文件夾)

Console.WriteLine(fi.FullName);

}

// 獲取子文件夾集合

subDirs = root.GetDirectories();

foreach (System.IO.DirectoryInfo dirInfo in subDirs)

{

//遞歸調(diào)用本方法應(yīng)用于于子文件夾

WalkDirectoryTree(dirInfo);

}

}

}

}

復(fù)制代碼

遞歸方法很簡(jiǎn)潔,但如果目錄樹很大且嵌套很深,則有可能會(huì)引起堆棧溢出異常。

評(píng)論
相關(guān)文章
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
一本中文在线精品视频 | 日韩欧美在线综合网另类 | 亚洲精品自在线 | 精品成年人在线观看 | 中文亚洲成a人片在线观看 亚洲国产精品久久三级视频 | 色国产综合免费视频在线播放 |