
Path.GetPathRoot מחזירה את הכונן, GetDirectoryName את שם התיקייה, GetFileName את שם הקובץ עם הסיומת, GetFileNameWithoutExtension את השם בלי הסיומת, ו-GetExtension את הסיומת בלבד.GetRandomFileName מחזירה שם קובץ אקראי, GetTempPath מחזירה את תיקיית הזמניים של המערכת, ו-GetTempFileName יוצרת קובץ זמני שאפשר להשתמש בו. תוכנות, למשל דפדפן בהורדת סרט, משתמשות בזה לשמירה זמנית.GetInvalidPathChars ו-GetInvalidFileNameChars מחזירות את התווים שאסור להשתמש בהם בשמות של נתיבים וקבצים, כמו סימן שאלה, כוכבית וגרשיים.GetFolderPath, שמחזירה את הנתיב של תיקיות מוכרות כמו שולחן העבודה, התמונות שלי והמועדפים. הנתיבים משתנים ממחשב למחשב, ולכן כדאי לקבל אותם בזמן הריצה ולא לכתוב אותם בקוד.הטקסט המלא של הדקות הראשונות בהרצאה «קבצים - Files - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
ונתיב, נתיב לתיקייה או נתיב לקובץ. קיימת המחלקה path והיא מאפשרת לנו לעשות כל מיני פעולות על נתיבים, בעיקר לקבל מידע. בואו נסתכל.
פונקציה ראשונה, combine, היא מאפשרת לנו לקחת חלקים של נתיב, בואו ניתן לה את c.2/Test וניתן לה a וניתן לה myfile.txt ונסתכל מה היא מחזירה לנו בחזרה ואנחנו הולכים לראות שמה שהפונקציה combine הולכת לעשות זה פשוט ליצור לנו נוטיב אחד מכל מה שהבאנו לה בואו נריץ ונראה שיש לנו נוטיב אחד ויחיד
זאת אומרת הפונקציה combine הוסיפה בשבילנו את ה-backslash הזה בלי שאנחנו נתעסק עם ההוספה שלו או עם השרשור שלו יכול להיות שיותר קל לכם לשרשר בעצמכם אז זה ממש בסדר ואם אתם רוצים שהיא תעשה את זה היא גם יכולה לעשות את זה.
שימו לב שלא מעניין אותה אם באמת היה נתיב כזה אנחנו יכולים סתם לרשום ABC ולהריץ ואנחנו רואים שהיא מביאה לנו את הנתיב הזה בלי קשר אם הוא קיים או לא קיים והרי אין לי נתיב כזה בתוך תיקיית טסט אין לי פה תיקייה שנקראת ABC כשם אחד.
אוקיי אז יש לנו פה את הפונקציה combine פונקציה נוספת נפוצה שקיימת או ליתר דיוק סדרה של פונקציות כאלו, ופונקציות שמביאות מידע לגבי נתיב מלא.
אז בואו נסתכל, וקודם כל ניקח איזשהו נתיב מלא. בואו ניקח כאן, אפילו נכתוב את זה ישירות. אני אראה את הפונקציה הראשונה, שנקראת getPathRoot.
getPathRoot אומרת, תביאו לי נתיב מלא. בואו ניתן לה את c.2/Test/a/myfile.yaml תביאו לי את כל הנתיב הזה ואני אגיד לכם מה ה-ROOT פולדר או ה-ROOT דירקטור או ה-ROOT דרייב שקיים שם. בואו נריץ ונראה שהוא אומר לנו שהדבר הראשון שקיים הכונן הוא בעצם C.
טוב יש לנו סדרת פונקציות כאלו שמאפשרות לקבל כל מיני דברים על הנתיב. לדוגמה GET DIRECTORyName אומרת אני אביא לכם את השם של התיקייה.
לאחר מכן יש לנו get file name אומרת אני אביא לכם את השם של הקובץ כולל הסיומת get file name without extension מאוד נפוצה אומרת לנו אני אביא לכם את השם של הקובץ בלי הסיומת ו-get extension אומרת לנו אני אביא לכם רק את הסיומת בואו נריץ את זה ונראה את החלקים השונים של הנתיב שהצלחנו להביא מהנתיב המלא הנה הכונן הנה כל הנתיב רק של התקייה הנה שם קובץ כולל סיומת,
הנה שם קובץ ללא סיומת, והנה רק הסיומת. הרבה פעמים קורה שאתם רוצים לקחת חלקים מקובץ, ובמקום שאני עכשיו אתחיל לחפש את הנקודה ואת הסלאש האחרון וכו', הנה היא עושה לנו את זה בלי שום בעיה.
סדרת פונקציות נוספת זאת סדרת פונקציות שמביאה דברים רנדומליים. יש לנו פה את הפונקציה get random file name.
יכול להיות מצב שאתם רוצים להביא איזה קובץ רנדומלי רק בשביל לשמור איזה משהו זמני ואז למחוק את הקובץ. בואו רק נראית פה שורה ונסתכל ונראה שהוא מביא לנו סתם איזשהו שם.
אם אנחנו נריץ את זה שוב פעם אנחנו נקבל שם אחר לגמרי. אם אנחנו נריץ את זה שוב פעם אנחנו כמובן כל פעם שאנחנו מריצים אנחנו מקבלים איזשהו שם עם איזושהי סיומת רנדומלית רק בשביל שנוכל לשמור איזה משהו זמני.
אפשרות נוספת זה get temp הפונקציה הזאת לא רק מביאה שם של קובץ, אלא בעצם היא לא מביאה שם של קובץ, היא מביאה רק נתיב זמני לאיזושהי תקייה שנקראת temp שיכולה להיות בתוך המחשב ונמצאת בנתיב הזה.
אז אנחנו רואים שקיבלנו פה איזשהו נתיב זמני, בואו באמת נראה אם הנתיב הזה קיים לנו במחשב כן או לא. נלך נראה c document and settings, בתוכו יש לנו את השם הזה ובתוכו יש לנו Local Settings.
הנה ה-Local Settings. דרך אגב, זה שאתם רואים את זה טיפה צהוב בהיר, זה אומר שזה בעל תכונה שנקראת Hidden. אנחנו נדבר עליה בהמשך.
ויש לנו פה תיקיית תמפ. הנה אנחנו רואים פה את התיקייה. בתוך תיקיית תמפ, בואו נראה מה יש לנו. מלא מלא קבצים. ותיקיות שהמערכת משתמשת בהן בשביל דברים זמניים.
דרך אגב, תמיד טוב לנקות את התיקייה הזאת כשעושים ניקוי עבור המחשב עצמו. אז ככה זה מנקה לנו הרבה דברים.
Anyway, אנחנו יכולים לחזור בחזרה לטסט איפה שהיינו קודם. דבר נוסף שיש לנו זה אפשרות לקבל temp file name. בואו נריץ.
temp file name אומרת לנו אני מביאה לכם לא רק נתיב זמני כזה, אלא בתוכו אני יוצרת לכם סתם איזשהו קובץ זמני שאתם יכולים פשוט לקחת ולהשתמש איתו.
זה כל הטמפים שתמיד היינו רואים בתוך התיקיות האלה. ככה תוכנות יוצרות לעצמם איזשהו טמפ פייל ומשתמשות איתו.
לדוגמה, דפדפן, כאשר אתם מורידים סרט, מה שהוא עושה, הוא צריך לשמור את הסרט איפשהו במחשב, אז הוא יכול פשוט לשמור את זה בתיקייה הזאת או בתיקייה אחרת עם איזשהו קובץ טמפ, שפשוט הסרט נשמר בתוכו, ברגע שסיימתם לראות את הסרט, הדפדפן מוחק אותו, או ברגע שהתמלא לו המקום הוא מוחק אותו.
אוקיי, מה עוד path מביאה לנו? path יכולה להביא לנו invalid file name chars. זה בעצם מערך של תווים, נקרא לזה invalid chars, שמכיל את כל התווים הלא חוקיים שניתן, או ליתר דיוק שאסור להגדיר בשם של קובץ או בשם של תיקייה.
Specific זה נותן לנו את השמות של האסורים בקבצים אבל זה לפי מה שאני יודע עד היום זה אותו הדבר בנוגע לתיקיות. בואו פשוט נרוץ ב-foreach על invalid chars ונציג כל אחד מהתווים האלה עם איזשהו רווח, נריץ ונראה שיש לנו פה סדרה של תווים לא חוקיים שאסור להגדיר בשמות של קבצים ושמות של תיקיות.
לדוגמה, את ה-Tab Slash או את ה-Tab Backslash או סימן שאלה, ואלה דברים שאתם לא יכולים להגדיר בשמות של קבצים.
גרשיים, משולשים וכולי. אם היינו מבצעים את אותו הדבר על תיקיות, היינו אמורים לקבל את אותו הדבר. Get Invalid Path Chars, ובואו נגיד שאלה Invalid File Chars ואלה Invalid Directory Chars.
נריץ, אנחנו אמורים לקבל בעצם את אותו הדבר בול האמת שלא האמת שזה לא אותו הדבר וזה מעניין כי אנחנו רואים שקבצים יש יותר דברים שהם אסורים לדוגמה נקודותיים כוכבית סימן שאלה אלה אסורים בנוגע לקבצים ובתיקיות לפי מה שכתוב לנו פה זה מותר לבצע מעניין אוקיי אז כאן ראינו כל מיני פעולות שאנחנו יכולים לבצע לפי תיקיות
או ליתר דיוק נתיבים על תיקיות. בואו ניקח את כל אלה, נוציא אותם החוצה path, פונקציה test path, וכעת אנחנו יכולים לעבור לפונקציה, או ליתר דיוק למחלקה הבאה שמתעסקת עם קבצים ותיקיות.
אז המחלקה הבאה נקראת file info, והמחלקה הזאת פשוט מאוד מאפשרת לנו להגדיר או לקבל אינפורמציה על קובץ אחד ויחיד ספציפי. עכשיו, שלושת המחלקות הקודמות שראינו, path, דיירקטורי ופייל ומחלקות סטטיות כלומר יש להם פונקציות סטטיות שעושות פעולות כלליות ולכן בכדי להגיע לפונקציות אנחנו רושמים את שם המחלקה נקודה ואז את שם הפונקציה פייל אינפו
לעומת זאת היא לא מחלקה סטטית ומאפשרת לנו להגדיר אובייקט ממנה בואו נגדיר אובייקט שנקרא פשוט אינפו ניצור אובייקט והקונסטרקטור שלו אומר לנו אתם חייבים להביא לי שם של קובץ אוקיי אז בואו נלך ונביא את הקובץ test a myfile.txt ובואו נדאג רק שאכן יהיה קובץ כזה שמה בתוך תקיית a
בכדי לקבל עליו כל מיני נתונים אינפורמטיביים. בואו נפתח פה קובץ, נקרא לו myfile.txt, נשמור, נחזור בחזרה וכעת אחרי שהצבנו עליו את אובייקט האינפורמציה הזה, בואו נראה אילו דברים אנחנו יכולים לקבל ממנו.
דבר ראשון מאוד נפוץ זה את הגודל שלו info.length כמה בתים יש לקובץ אם אנחנו מסתכלים על הקובץ עצמו אנחנו יכולים לגשת מקש ימני פרופרטיז ולראות שיש לנו כאן 12 בתים סך הכל בתוך הקובץ הוא תופס לנו 4 קילו שזה די באסה אבל ככה מערכת ההפעלה windows עובדת אבל יש לו רק 12 בתים שמרכיבים אותו אוקיי אז אם אנחנו מריצים את זה אנחנו אמורים לקבל
12 ואכן קיבלנו 12. אז לפעמים אנחנו רוצים לדעת מה הגודל של הקובץ בכדי לרוץ עליו בית בית או לבצע עליו כל מיני פעולות או לדעת אם הוא גדול מדי, קטן מדי.
ה-info.length מביא לנו את הנתונים האלה. הדבר הבא שאנחנו יכולים לקבל זה את שם התיקייה שלו דירקטורי ניים בואו נריץ ונראה שהוא יושב בתיקייה c test a הדבר הבא שאנחנו יכולים לקבל ממנו זה את ה-name שלו בואו נריץ ונראה שיש לנו
myfile.ext אז אנחנו רואים שהניים הגיע כולל הסיומת. הדבר הבא שאנחנו יכולים לקבל זה את האקסטנשן בלבד. נריץ ונראה .ext ואנחנו רואים שכל מיני דברים שיכולנו לעשות על ידי המחלקה פייל אנחנו יכולים גם על ידי פייל אינפו וכמובן זה לא חדש לנו שבתכנות אנחנו יכולים להשיג את אותה המטרה על ידי כמה דרכים.
הדבר הבא שאנחנו יכולים לקבל זה גם כן דברים שראינו בעבר לדוגמה creation time באו נריץ ונראה בדיוק את השעה שבה הוא נוצר אותו הדבר יש לנו אפשרות להגיע ל last access time או last write time כמו שעשינו מקודם כל מיני נתונים לגבי הקבצים דבר הבא שאנחנו יכולים לעשות זה לשנות דברים שקשורים לתכונות של הקובץ מה זה אומר תכונות של קובץ
כאשר אנחנו מסתכלים על הפרופרטיז של הקובץ אנחנו יכולים לראות שיש פה למטה משהו שנקרא Attributes האם הוא Read Only, האם הוא Hidden, האם