前段時間我也試著做了個找文件夾的過程(只是單單列出磁盤上所有normal屬性的文件夾, 不考慮檢索文件), 希望大家也給點意見.
1.聲明兩個動態數組arr1()和arr2()
2.建立FSO對象獲取本地物理硬盤上的邏輯分區符並放入arr1()中, 使用一個外部循環遍歷arr1()
3.獲取子目錄並放入arr2()中, 新增的子目錄添加到數組的後面, 同時使用内部循環來遍歷arr2(), 使用一個變量跟蹤元素位置, 當變量小於arr2()上界時繼續循環.
假設磁盤目錄結構如下:
PC
|__C:\
| |__Rt1
| | |__Sub1
| | | |__Sub5
| | | |__Sub6
| | |__Sub2
| |__Rt2
| |__Sub3
|__D:\
|__Rt3
|__Sub4
我所設想的工作流程是這樣的:
把C:和D:放在arr1()中, 是為了先搜尋完C:盤的文件夾再繼續搜尋D:盤的, 免得磁頭在C和D之間來回移動浪費時閒, 這個由外部循環完成. 外部循環同時也根據當前所處理的對象來獲取其根目錄, 首先是C:, 其根目錄Rt1和Rt2會被放入arr2()中, 此時有arr2("Rt1", "Rt2:").
内部循環開始, 位置跟蹤為1, 獲取Rt1的子文件夾Sub1和Sub2并添加到arr2()的後面, 於是有arr2("Rt1", "Rt2","Sub1","Sub2"). 位置跟蹤為2, 獲取Rt2的子文件夾, 有arr2("Rt1", "Rt2","Sub1","Sub2","Sub3"). 位置跟蹤為3, 有arr2("Rt1", "Rt2","Sub1","Sub2","Sub5","Sub6").
當搜尋完Sub6後, 跟蹤的值=數組上界, 此次内部循環結束, 回到外部循環, D:的根目錄被添加到arr2()的後面, 然後開始下一次的内部循環, 最後就有arr2("Rt1", "Rt2","Sub1","Sub2","Sub3","Sub5","Sub6","Rt3","Sub4"), 搜尋完Sub4後, 内部循環結束, 外部循環也結束. |