עבודה עם נתיבי קבצים ב- .NET
.NET כולל מנגנון מוכלל לעבודה עם נתיבי מערכת קבצים.
בתרגיל הקודם, לא הצלחנו לנתח תיקיות רבות. אם יש לך מערכת קבצים עם תיקיות וקבצים רבים, בניית נתיבים באופן ידני עשויה להיות מייגע. תודה רבה, .NET מספק כמה קבועים מוכללים ופונקציות כלי שירות כדי להקל על טיפול בנתיבי קבצים.
כאן, תלמדו על כמה מהתדירות ופונקציות כלי השירות System.IO השמות והסוג System.Environment, כדי שתוכל להפוך את התוכנית שלך לחכמה וחדה יותר.
קביעת הספריה הנוכחית
לעתים, אינך יודע באיזה ספריה או נתיב התוכנית שלך אמורה לפעול. נניח שברצונך שהתוכנית תשתמש במדריך הכתובות הנוכחי, אך אינך יודע את הנתיב.
.NET חושף את הנתיב המלא אל הספריה הנוכחית באמצעות Directory.GetCurrentDirectory השירות.
Console.WriteLine(Directory.GetCurrentDirectory());
אם אתה מפעיל את הקוד הקודם מהתיקיה 201 במבנה הבא, Directory.GetCurrentDirectory() מחזירה stores\201:
📂 stores
📂 201
עבודה עם ספריות מיוחדות
.NET פועל בכל מקום: ב- Windows, macOS, Linux ואפילו במערכות הפעלה למכשירים ניידים כגון iOS ו- Android. כל מערכת הפעלה עשויה לכלול או לא לכלול את הרעיון של תיקיות מערכת מיוחדות (כגון מדריך כתובות ביתי – המוקדש לקבצים ספציפיים למשתמש - או מדריך כתובות של שולחן עבודה, או מדריך כתובות לאחסון קבצים זמניים).
סוגים אלה של ספריות מיוחדות שונים עבור כל מערכת הפעלה. יהיה זה מסורבל לנסות לזכור את מבנה מדריך הכתובות של כל מערכת הפעלה ולבצע בוררים המבוססים על מערכת ההפעלה הנוכחית.
ספירת System.Environment.SpecialFolder מציינת קבועים לאחזור נתיבים לתיקיות מערכת מיוחדות.
הקוד הבא מחזיר את הנתיב לנתיב המקביל של התיקיה 'המסמכים שלי ' של Windows או של ספריית HOME של המשתמש עבור כל מערכת הפעלה, גם אם הקוד פועל ב- Linux:
string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
עבודה עם נתיבים
נתיבים הם נושא ש עולה בתדירות גבוהה כל כך ש- .NET כולל מחלקה הנקראת Path במיוחד לעבודה איתם.
המחלקה Path ממוקמת System.IO שמות של .NET, ולא צריך להתקין אותה.
תווי נתיב מיוחדים
מערכות הפעלה שונות משתמשות בתווים שונים כדי להפריד בין רמות מדריך הכתובות.
לדוגמה, Windows משתמש קו נטוי הפוך (stores\201) ו- macOS משתמש קו נטוי (stores/201).
כדי לסייע לך להשתמש בתו הנכון, Path מכילה את DirectorySeparatorChar זה.
.NET מפרש באופן אוטומטי שדה זה לתו המפריד הרלוונטי למערכת ההפעלה כאשר עליך לבנות נתיב באופן ידני.
Console.WriteLine($"stores{Path.DirectorySeparatorChar}201");
// returns:
// stores\201 on Windows
//
// stores/201 on macOS
נתיבי צירוף
הכיתה Path פועלת עם המושג של נתיבי קבצים ותיקיה, שהם רק מחרוזות. באפשרותך להשתמש ברמה Path כדי לבנות באופן אוטומטי נתיבים נכונים עבור מערכות הפעלה ספציפיות.
לדוגמה, אם ברצונך לקבל את הנתיב לתיקיה stores/201/201, באפשרותך להשתמש בפונקציהPath.Combine כדי לעשות זאת.
Console.WriteLine(Path.Combine("stores","201")); // outputs: stores/201
זכור, עליך להשתמש Path.Combine או Path.DirectorySeparatorChar המחלקה במקום במחרוזות קידוד קשיח, מכיוון שהתוכנית שלך עשויה לפעול במערכות הפעלה רבות ושונות. המחלקה Path תמיד מעצב את הנתיבים כראוי עבור מערכת ההפעלה שבה היא פועלת.
תשר
לכיתה Path לא אכפת אם דברים באמת קיימים. נתיבים הם מושגיים, לא פיזיים, והכיתה בונה ומנתח מחרוזות עבורך.
קביעת סיומות שמות קבצים
הכיתה Path יכולה גם לומר לך את סיומת שם הקובץ. אם יש לך קובץ וברצונך לדעת אם זהו קובץ JSON, באפשרותך להשתמש בפונקציה Path.GetExtension לקובץ.
Console.WriteLine(Path.GetExtension("sales.json")); // outputs: .json
קבל את כל מה שעליך לדעת אודות קובץ או נתיב
מחלקת Path מכילה שיטות רבות ושנוהות שמבצעים פעולות שונות. באפשרותך לקבל את המידע הרב ביותר אודות ספריה או קובץ באמצעות DirectoryInfo או FileInfo, בהתאמה.
string fileName = $"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales{Path.DirectorySeparatorChar}sales.json";
FileInfo info = new FileInfo(fileName);
Console.WriteLine($"Full Name: {info.FullName}{Environment.NewLine}Directory: {info.Directory}{Environment.NewLine}Extension: {info.Extension}{Environment.NewLine}Create Date: {info.CreationTime}"); // And many more
קיימות שיטות שירות ומאפיינים שימושיים רבים יותר בכיתות Path, DirectoryInfoו- FileInfo, אך מושגי בסיס אלה הם המושגים המרכזיים שבהם סביר להניח שתשתמש בתדירות הגבוהה ביותר. בתרגיל הבא, תחבר נתיבים ותזהה .json קבצים.