天天看點

GetDirectories 出錯的解決方法

我想找到d盤裡面所有 "*.pst檔案,類似 windows 下的磁盤搜尋功能,

using system.io;

directory.getfiles(@"d:\", "*.pst", searchoption.alldirectories)

測試環境為win7 提示說 某某目錄沒有通路權限。

獲得檔案屬性   file.getattributes(dir.fullname).tostring()  

沒有權限通路的将會有  system  、hidden屬性。

于是想到是否可以通過屬性來過濾這些檔案,是以想到了用遞歸的思想去周遊所有檔案。

還好,在網上居然找到了這個。

using system.collections;

        arraylist alist = new

arraylist();

        void dirsearch(string

sdir)

{

try

foreach (string d in

directory.getdirectories(sdir))

foreach (string f in directory.getfiles(d,

"*.pst"))

alist.add(f);

}

dirsearch(d);

            catch

(system.exception

excpt)

console.writeline(excpt.message);

        }

 getfiletime("d:\\");

通過遞歸和直接 找所有的檔案,兩者都有異常, 差別在于前者的異常,就抛出某個節點的異常,  alist.add(f);

不會執行,(這裡是遞歸循環哦)循環繼續,後者是遇到異常,則指派操作不能執行,傳回null.

也可以通過getattributes 來判斷,原理類似。