//define at the program head
int HowDeepToScan = 3; //how deep the algo should enter:string file_ext = ".exe"; //the file extension
List<string> fName_list = new List<string>(); //save the file list in this 'List<string>'
public void ProcessDir(string sourceDir, int recursionLvl)
{
if (recursionLvl <= HowDeepToScan)
{
// Process the list of files found in the directory.
string[] fileEntries = Directory.GetFiles(sourceDir);
foreach (string fileName in fileEntries)
{
// do something with fileName
if (fileName.ToLower().Contains(file_ext))
fName_list.Add(fileName);
}
// Recurse into subdirectories of this directory.
string[] subdirEntries = Directory.GetDirectories(sourceDir);
foreach (string subdir in subdirEntries)
{
// Do not iterate through reparse points
if ((File.GetAttributes(subdir) &
FileAttributes.ReparsePoint) !=
FileAttributes.ReparsePoint)
//than, recurs:
ProcessDir(subdir, recursionLvl + 1);
}
}
}
הפונקציה הזאת מקבלת שם תיקיה ראשית ומספר המציין את עומק הכניסה של האלגוריתם אל תוך תיקיות המשנה, ומבצעת פעולה כלשהיא בתוך תיקיות המשנה.
קריאה לפונקציה תהיה למשל:
ProcessDir("c:\\", 1);
בקוד המוצג למעלה הדגמתי ריצה על קבצים exe
במקרה ששם הקובץ מכיל (מסתיים) עם סיומת .exe
אז תוסיף אותו לרשימה המכילה את שמות הקבצים.
אין תגובות:
הוסף רשומת תגובה