60. System IO Path

בסימן הטיפים היומיים הקודמים,

נניח שיש לנו נתיב של תיקיה ושם של קובץ בתוך אותה התיקייה, ואנחנו רוצים לדעת את הנתיב של הקובץ.

1
2
3
4
string myDocuments =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string myFileName = "TextFile.txt";

הדרך הלא נכונה:

1
string myFilePath = myDocuments + @"\" + myFileName;

הדרך הנכונה:

1
string myFilePath = Path.Combine(myDocuments, myFileName);

למי שממש רוצה להשתמש בדרך הלא נכונה, לפחות שיכתוב ככה:

1
string myFilePath = myDocuments + Path.DirectorySeparatorChar + myFileName;

שימו לב שזה לא תלוי במערכת ההפעלה!

באופן כללי המחלקה הסטטית Path שנמצאת בNamespace ששמו System.IO, עוזרת לנו בהרבה מאוד מקרים כאלה של עבודה עם נתיבים.

למשל, נניח שאנחנו יודעים נתיב מלא של קובץ, ואנחנו מעוניינים לדעת את הנתיב של התיקייה שבה הוא נמצא:

הדרך הלא נכונה:

1
2
string folderPath =
myFilePath.Substring(0, myFilePath.LastIndexOf(@"\"));

הדרך היותר נכונה:

1
2
string folderPath =
new FileInfo(myFilePath).Directory.FullName;

הדרך הנכונה באמת:

1
2
string folderPath =
Path.GetDirectoryName(myFilePath);

ניתן להשתמש בזה גם כדי למצוא אב של תיקייה:

1
2
string parentFolderPath =
Path.GetDirectoryName(folderPath);

עוד דברים מגניבים שאפשר לעשות עם זה:

להשיג סיומת של קובץ:

1
string extension = Path.GetExtension(myFilePath); // .txt

להחליף סיומת של קובץ:

1
string myDocumentPath = Path.ChangeExtension(myFilePath, "doc");

בכל מקרה אם אתם מתעסקים בנתיבים של קבצים, המחלקה הזאת תחסוך לכם הרבה קוד

סוף שבוע מצוין

שתף