PracticU

קבצים - Files - חלק 1

בלי כתוביותעם כתוביות
PracticU › קורס תכנות מתקדם - #Advanced .NET C › קבצים - Files - חלק 1
מילון מושגים:
C# - שפת תכנות מונחית עצמים של מיקרוסופט, המשמשת בעיקר לפיתוח יישומים על פלטפורמת .NET.
מחלקה - תבנית בתכנות מונחה עצמים שמגדירה אילו נתונים ופעולות יהיו לאובייקטים שנוצרים ממנה.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
RAM - זיכרון הגישה האקראית של המחשב, מהיר ונדיף, שבו נשמרים נתונים ותוכניות בזמן ריצתם.
תמונה - קובץ גרפי המוצג על המסך. בהקשר של וירטואליזציה או Docker, תבנית מוכנה שממנה יוצרים מכונה או קונטיינר.
נתיב - מחרוזת שמתארת את מיקומו של קובץ או תיקייה במערכת הקבצים, או כתובת של משאב בתוך אתר.
פרמטר - ערך שמועבר לפונקציה או לפקודה כקלט, ומשפיע על אופן פעולתן ועל התוצאה שהן מחזירות.

קבצים - Files - חלק 1
בשיעור הזה נכנסים לנושא הקבצים והתיקיות ב-C#: מה הוא קובץ, ואילו פעולות על קבצים ותיקיות מאפשרת המחלקה File ומחלקה Directory.
השלבים העיקריים
1. קובץ לעומת זיכרון: קובץ הוא יחידת מידע שנשמרת באזור זיכרון לא נדיף, כמו דיסק קשיח או דיסק און קי. משתנה בתוך התוכנית נמצא בזיכרון RAM, שנמחק כשהתוכנית נסגרת.
2. הסיומת: הסיומת אומרת למערכת ההפעלה איזו תוכנה לפתוח את הקובץ בלחיצה כפולה, והיא לא קובעת את התוכן. תמונה עם סיומת שונה נשארת תמונה, אבל מערכת ההפעלה לא תדע איך לפתוח אותה.
3. מחלקת File: מחלקה עם פונקציות סטטיות לפעולות כלליות על קבצים. File.Exists בודק אם הקובץ קיים, File.Copy מעתיק ו-File.Move מעביר, כלומר מעתיק ומוחק את המקור.
4. זמנים של הקובץ: File.GetCreationTime ו-File.GetLastAccessTime מחזירים את זמן היצירה והגישה האחרונה.
5. מחיקה: File.Delete מוחק קובץ, והקובץ לא נכנס לסל המחזור. מחיקה של קובץ שלא קיים לא גורמת לשגיאה.
6. נתיבים עם backslash: ב-C# התו backslash הוא תו מיוחד בתוך מחרוזת. כדי לכתוב נתיב רגיל משכפלים כל backslash, או כותבים לפני המחרוזת את הסימן @ שמבטל את המשמעות המיוחדת.
7. מחלקת Directory: מאפשרת לבדוק אם תיקייה קיימת (Directory.Exists), ליצור תיקייה (Directory.CreateDirectory), להעתיק או להעביר תיקייה עם כל תכולתה, ולקבל את רשימת הקבצים והתיקיות שבתוכה (GetFiles, GetDirectories).
8. סינון קבצים: מחרוזת חיפוש כמו *.jpeg מביאה רק קבצים עם הסיומת הזאת. פרמטר נוסף קובע אם החיפוש נעשה רק בתיקייה עצמה או גם בתתי התיקיות.
9. מחיקת תיקייה: Directory.Delete לא מוחק תיקייה שיש בה קבצים, ולכן צריך קודם למחוק את הקבצים ורק אחר כך את התיקייה.
בסיום השיעור ברור אילו פעולות בסיסיות אפשר לעשות על קבצים ותיקיות באמצעות File ו-Directory, ומה נדרש לפני כל מחיקה.
השיעור הבא בקורס: קבצים - Files - חלק 2

פרקי ההרצאה: קבצים - Files - חלק 1

  1. 00:00

    פעולות על קבצים ותיקיות

  2. 00:38

    מהו קובץ וזיכרון לא נדיף

  3. 02:48

    משמעות סיומת הקובץ

  4. 04:40

    מחלקת File ובדיקת קיום קובץ

  5. 08:25

    העתקת קובץ עם File.Copy

  6. 09:23

    העברת קובץ עם Move

  7. 12:01

    מחיקת קובץ עם Delete

  8. 13:43

    פעולות על תיקיות עם Directory

תמלול ההרצאה: קבצים - Files - חלק 1

הטקסט המלא של הדקות הראשונות בהרצאה «קבצים - Files - חלק 1» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:04

    אנחנו מגיעים לנושא חדש והנושא הזה מתעסק בקבצים ותיקיות וכמו שאתם בטח מבינים זה נושא מאוד מאוד חשוב ומאוד מאוד בסיסי וגם מאוד שימושי שמשתמשים איתו כמעט בכל תוכנית.

  2. 00:19

    מה אנחנו הולכים לראות בנושא הזה? קודם כל מה זה קובץ? איך אנחנו יכולים לבצע פעולות על קבצים? איך אנחנו יכולים לבצע פעולות על תיקיות? וכמובן כל מה שקשור לכתיבה וקריאה לקבצים.

  3. 00:34

    אז בואו נתחיל. דבר ראשון, מה שאנחנו הולכים לראות זה איך אנחנו יכולים לבצע כל מיני פעולות על קבצים. אבל מה זה קובץ?

  4. 00:45

    אז אנחנו יודעים שקובץ בעצם זה איזושהי יחידת מידע שנמצאת בתוך אזור זיכרון שהוא לא נדיף. מה זה אומר לא נדיף? לא נמחק כאשר סוגרים את האפליקציה.

  5. 01:00

    אם אנחנו באפליקציה הולכים לפתוח משתנה לדוגמה int x ומכניסים לתוכו מידע, אחלה, אז שמרנו את המידע. כל המידע הזה נשמר באזור זיכרון שנקרא ראם Random Access Memory וזה הזיכרון שהתוכנית עובדת איתו ישירות.

  6. 01:18

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

  7. 01:32

    קובץ לעומת זאת יושב באזור זיכרון שהוא לא נדיף לדוגמה ההרדיסק ואנחנו יכולים לראות דרך סייר הקבצים אילו קבצים ותיקיות קיימים בהארדיסק על ידי העץ הזה שאנחנו רואים פה של כל הקבצים והתיקיות.

  8. 01:47

    כאן לדוגמה בכונן C אנחנו רואים שיש לנו תיקיית טסט ובתוכה תיקייה C או שלוש תיקיות ABC וב-C יש לנו כל מיני תמונות.

  9. 01:57

    אז תמונה בייסיקלי זה קובץ פשוט מחזיק לנו מידע של פיקסלים ולכן ברגע שלוחצים עליו דאבל פליק נפתחת איזושהי תמונה וכל המידע הזה שמור כקובץ בהארדיסק.

  10. 02:13

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

  11. 02:31

    אם כך, קובץ זה פשוט מאוד יחידת המידע הזאת שניתן לשמור אותה בזיכרון הזה, ניתן לפתוח אותו, לכתוב אליו, לקרוא ממנו מידע דרך תוכנית שאנחנו כותבים, ומה שהולכים לעשות כרגע זה פעולות על קבצים כולל כתיבה וקריאה.

  12. 02:48

    אוקיי, מילה אחת לפני שרק נתחיל, לקובץ אנחנו רואים שיש סיומת, זה בעצם מה שמופיע אחרי הנקודה האחרונה של הקובץ, ונהוג לחשוב שהסיומת קובעת את הקובץ וזה לא דבר שהוא מדויק להגיד.

  13. 03:04

    כל מה שהסיומת אומרת במערכות הפעלה Windows זה שכאשר אתם לוחצים דאבל קליק על הקובץ, לפי הסיומת, מערכת ההפעלה יודעת איזה תוכנה להשתמש בה בשביל להציג את הקובץ. זה כל מה שהסיומת אומרת.

  14. 03:24

    אבל אם יש לי פה את התמונה הזאת שנקראת pool.jpeg ולדוגמה הייתי משנה לה את הסיומת ל-abc, האם עדיין זה תמונה או שזה לא תמונה? אז אם כך, עדיין הקובץ הזה נחשב קובץ תמונה כי לא שיניתי את המידע שיש בקובץ רק שיניתי כביכול את הסיומת שלו או את השם וסיומת

  15. 03:46

    וכל מה שזה אומר זה אומר למערכת ההפעלה אני לא יודעת איך לפתוח את הקובץ הזה אבל זה עדיין קובץ תמונה שימו לב שכשאני לוחץ עליו דאבל קליק מערכת ההפעלה אומרת לי אני לא יודעת איך לפתוח אותו תגיד לי איך אתה בדיוק רוצה לפתוח אותו תבחר לי איזושהי תוכנה מסדרת תמונות שתפתח

  16. 04:00

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

  17. 04:19

    מסוגלת להציג תמונות, נבצע אוקיי, ונראה שעדיין נפתח הקובץ, זאת אומרת, זה ששיניתי את הסיומת זה לא אומר שזה כבר לא תמונה.

  18. 04:30

    בואו נחזיר את זה בחזרה ל-JPG, בכדי שמערכת הפעלה תדע להבא איך לבצע פתיחה של הקובץ הזה. אז כעת, אחרי שאנחנו ראינו בגדול מה זה קובץ, בואו נסתכל אילו פעולות אנחנו יכולים לבצע על קבצים.

  19. 04:48

    קיימת המחלקה פייל שנמצאת במרחב השמות system.io ש-io זה קיצור של input output שזה basically דברים שעושים איתם עם קבצים כי כותבים אליהם וקוראים מהם.

  20. 05:03

    ופייל מכילה סדרה של פונקציות סטטיות שאנחנו יכולים לקרוא להם בכדי לבצע פעולות כלליות על קבצים. בואו נראה סדרה של פונקציות נפוצות. דבר ראשון אנחנו יכולים לבדוק האם קובץ מסוים קיים.

  21. 05:19

    בואו ניגש לכונן c לתיקיית test ובתוכה לתיקייה a ונאתר איזשהו קובץ שנקרא myfile.txt. קודם כל כבר אנחנו רואים שיש לנו פה סדרת שגיאות בגלל שאנחנו יודעים שבצפות C, במשפחת צפות C, Backslash זה תו שיש לו משמעות מיוחדת, והוא אומר שאם לדוגמה אנחנו רושמים Backslash

  22. 05:48

    ואות מיוחדת אחריו, אז יש משמעות אחרת ל-Backslash ולאות המיוחדת. לדוגמה Backslash-n אנחנו יודעים שזה Enter ולכן Backslash-m לא אומר שום דבר למערכת.

  23. 06:00

    אם אנחנו רוצים ש.NET תדע מה אנחנו רוצים לעשות פה, ליתר דיוק c-sharp אז יש לנו שתי אפשרויות או לשכפל כל backslash ואז מכרוזת שהיא hardcoded עם backslash משוכפלים מציינת ש-backslash backslash זה למעשה backslash אחד או אם יש לנו לדוגמה נתיב כמו במקרה הזה ואנחנו לא רוצים ללכת ולשכפל את כל הקבצים כל מה שאנחנו

  24. 06:24

    צריכים לעשות זה לשים שטרודל לפני המכרוזת וזה פותר לנו את כל הבעיה שטרודל אומר תתייחס לכל ה-backslash כאילו הם תווים רגילים ולא תו מיוחד שאחריו צריך לבוא תו אחר.

  25. 06:41

    בסדר, אז כל מה שאנחנו רוצים לעשות זה לבדוק כרגע אם קובץ כזה קיים שם, וקובץ כזה לא אמור להיות קיים לנו פה. בואו נסתכל על תיקיית A שנמצאת בתוך תיקיית טסט ונראה שהיא ריקה לגמרי, ונחזור בחזרה ואנחנו רוצים לבדוק מה בעצם מוצג לנו כאן.

  26. 07:03

    אז אנחנו יכולים לבצע איזושהי שאלה אם הדבר הזה קיים, בוא תציג לנו מה הפייל, myfile.txt exists else doesn't exist ויש לנו כרגע את הקוד בואו נריץ ונראה שהוא כותב לנו myfile.txt doesn't exist בסדר בואו נחזור בחזרה לתיקייה וניצור אותו מקש ימני new text file myfile.txt ונכתוב בתוכו גם איזושהי מחרובת Hello all נשמור נסגור נחזור לתוכנית

  27. 07:59

    הרצה ואנחנו רואים שהוא מצא אותו. למה זה טוב לנו להשתמש עם הפונקציה הזאת? כי הרבה פעמים אנחנו רוצים לעבוד עם איזשהו קובץ שמחזיק לנו מידע ששייך לתוכנית שלנו כמו רשימה של מוצרים, רשימה של לקוחות, רשימה של מבצעים ואנחנו רוצים לשמור אותה בקובץ ואנחנו רוצים לדעת האם הקובץ הזה קיים כן או לא.

  28. 08:24

    אם לא, אולי אנחנו רוצים להגיד למשתמש שייתר את הקובץ וזאת האופציה שלנו לבדוק את זה. אפשרות נוספת file.copy copy מבצעת העתקה של הקובץ הזה כאשר היא לא מוחקת את הקובץ מקור היא רק מעתיקה אותו אז בואו נעתיק את הקובץ שזה המקור אנחנו רואים פה source לדסטיניישן ונעשה בדיוק את אותו הדבר אבל נלך ונדביק אותו בתיקיה שנקראת b אותו קובץ בול העתקה בואו נריץ שימו לב רק

  29. 08:59

    לפני שאני מריץ שבתיקיה b אין שום דבר נריץ את התוכנית תוכנית הסתיימה נחזור לתיקיית b והנה יש לנו פה את הקובץ שגם כמובן כל התוכן שלו הוא עתק כמו שהוא.

  30. 09:18

    כמו שיש לנו פונקציית קופי יכולה להיות לנו הפונקציה move כאשר move מה שהיא עושה היא מעתיקה אותו אך גורמת למחיקה של הקובץ הקודם. בואו נעתיק אותו אפילו לתיקיית b ונראה אם אנחנו אפילו יכולים לשנות את השם ל myfile2 אני בכוונה לא רוצה לבצע פה קופי כי כבר עשינו קופי לפני זה.

  31. 09:45

    אוקיי, אז בואו נבדוק את זה. נסתכל רגע בתקייה B, יש רק מייל פייל, נסתכל בתקיית A ונראה שיש פה גם כן את מייל פייל. בואו נחזור ל-B ונריץ. תוכנית הסתיימה בהצלחה, נחזור בחזרה ונראה שיש לנו פה את מייל פייל 2, אבל מה שיותר מעניין זה מה קרה לקובץ המקור שהיה פעם בתקיית A, ואם נסתכל על תקיית A

  32. 10:13

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

  33. 10:33

    לדוגמה, יש לנו פה file.getCreationTime ניתן איזשהו קובץ, בואו ניקח את הקובץ הזה שנמצא בתיקיית b ונציג את מה שחוזר מהפונקציה.

  34. 11:00

    נסתכל על תיקיית b ונראה שיש לנו פה את הקובץ myfile.txt, בואו נריץ ונקבל את זמן היצירה שלו שזה basically היום בשעה 2, 23 ו-27 שניות.

  35. 11:17

    אותו הדבר יש לנו אפשרות לקבל את הפונקציה get last access time. בואו נריץ ונראה שלאסט אקסס טיים התבצע בזמן אחר כמובן כי לאחר מכן פנינו לקובץ ובדקנו משהו לגביו.

  36. 11:44

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

  37. 11:55

    אז יכול להיות הרבה פעמים שאנחנו רוצים לדעת האם הקובץ הזה עודכן, מתי הוא עודכן וכולי, יש לנו אפשרות לעשות את זה. פונקציה נפוצה נוספת נקראת delete ומאפשרת למחוק את הקובץ.

  38. 12:07

    אז בואו נבצע מחיקה של אותו קובץ, נסתכל רגע בתיקיית b, נראה שיש לנו myfile.txt, נחזור לתוכנית, נריץ, נחזור בחזרה לתיקיית B ואין לנו קובץ, אחלה, נמחק.

  39. 12:29

    בואו נסתכל על ה-recycle bin ונראה שהוא בכלל לא נמצא בתוך ה-recycle bin. יש לנו פה איזה תוכנית ישנה, נמחק אותה. ושימו לב שהקובץ לא נכנס ל-recycle bin אז נא להיזהר כשמשתמשים עם זה.

  40. 12:47

    אוקיי, הדבר הבא, מה קורה אם אני מבצע מחיקה לקובץ שלא קיים? בואו נריץ ונראה שאין בעיה לבצע מחיקה של קובץ לא קיים כי מה שבעצם באתם ואמרתם, אני לא רוצה את הקובץ הזה אבל הוא לא קיים אז אין שום בעיה איתו.

  41. 13:02

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

  42. 13:23

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

  43. 14:02

    דירקטורי נקודה אגזיסט

לקורס המלא: קורס תכנות מתקדם ב‑#C ודוט-נט

ההרצאה הקודמת: תרגילים על Generics

ההרצאה הבאה: קבצים - Files - חלק 2

הרצאות קשורות מקורסים אחרים

  • קבצים - files
  • Text Files
  • files ownership
  • עבודה עם קבצים ב-Xcode - חלק 1

קורסים נוספים במסלול

  • קורס WinForms - תוכנות רגילות בווינדוס
  • פרויקט מעשי ב-#C - בונים מחשבון פשוט
  • פרויקט מעשי ב-#C - ספר טלפונים
  • פרויקט מעשי ב-#C - תוכנת צייר
  • קורס ADO.NET - חיבור אתר למסד נתונים
  • קורס WCF - תקשורת למתקדמים בדוט-נט