C#.חיפוש קבצים

יטרנר

New member
C#.חיפוש קבצים

שלום לכולם... התבקשתי לספור כמה קבצים מסתיימים בסיומות שהגדרתי מראש בתוך תיקייה מסויימת. ניסיתי לעשות זאת ולא הצלחתי. לכל מי שרוצה ומבין בזה...
static void Main(string[] args) { Console.WriteLine("please enter a path"); string folder = Console.ReadLine(); string []extensions= {"*txt","*dll","*tmp","*doc","*exe"}; GetFileData(folder, extensions); //string[] files = Directory.GetFiles(@"c:\", "filetypes", SearchOption.TopDirectoryOnly); //foreach (string s in filetypes) // Console.WriteLine(s); //foreach (string file in files) //Console.WriteLine(file); } public static void GetFileData(string path, string []extensions) { int count = 0; for (int i = 0; i < extensions.Length; i++) { string[] files = Directory.GetFiles(path, extensions,SearchOption.TopDirectoryOnly); for (int j = 0; j < files.Length; j++) { string[] extension = files[j].ToString().Split('.'); string file=extension [extension.Length-1]; if (extensions == file) count++; } } Console.WriteLine(count); } }
 

ג81

New member
למה הכוכביות במערך ה-extensions?

זה לא אמור להיות למשל "exe" במקום "*exe"?
 

ג81

New member
לא הבנתי למה צריך כוכבית

נסה בלי כוכבית. מה שאתה עושה בלולאה זה השוואה בין מחרוזות, כלומר למשל יש לך קובץ "a.exe" ואתה עושה split, אז אתה מקבל במשתנה file את המחרוזת "exe". עכשיו לפי הקוד שכתבת אתה משווה אותה לכל הערכים במערך extensions. אבל במערך extensions אין אף מחרוזת "exe", אלא רק "*exe", לכן כמובן שהתכנית לא מוצאת מחרוזת כזאת במערך extensions.
 

david o

New member
קבל חכה

אתה עובד לא נכון. לפני שניגשים לפונקציה Directory.GetFiles צריך להבין בדיוק מה היא עושה ואילו פרמטרים היא מקבלת. בשביל זה יש את ה MSDN (ניתן לצפיה און ליין וניתן גם להורדה). לאחר שתבין איך עובדים עם הפרמטר searchPattern, תראה שאין צורך בלולאה הפנימית.
 
למעלה