PracticU

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

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

קבצים - Files - חלק 3
בשיעור הזה מבחינים בין קובץ טקסט לקובץ בינארי, ומתחילים לכתוב לקובץ טקסט בעזרת StreamWriter, תוך הבנה של מה קורה מאחורי הקלעים.
השלבים העיקריים
1. שתי קטגוריות של קבצים: קובץ טקסט מכיל רק תווים שאפשר לקרוא, ללא קשר לסיומת. קובץ בינארי מכיל מידע שצריך תוכנה שתפרש אותו, כמו תמונה, וידאו או קובץ Word.
2. סיומת לא קובעת את הסוג: שינוי הסיומת של קובץ טקסט לא הופך אותו לקובץ אחר. הקובץ נשאר טקסטואלי, ורק מערכת ההפעלה מתבלבלת בבחירת התוכנה לפתיחה.
3. סטרים (Stream): קו תקשורת בין שתי נקודות שדרכו זורם מידע. הנקודות יכולות להיות התוכנית וקובץ, שתי נקודות בזיכרון, או התוכנית ומדפסת. מחלקת Stream היא מחלקת בסיס, ויורשות ממנה מחלקות לכל סוג מקור.
4. StreamWriter: המחלקה לכתיבה לקובץ טקסט. הבנאי מקבל נתיב, ופרמטר שקובע אם להוסיף לסוף הקובץ או לדרוס אותו. הפונקציות Write ו-WriteLine כותבות את הטקסט.
5. סגירה: Close ו-Dispose סוגרים את הקובץ ומשחררים את המשאב שנתפס ממערכת ההפעלה. מערכת ההפעלה מונעת כתיבה לקובץ פתוח בידי תוכנית אחרת, ולכן יש לסגור אותו.
6. כתיבה מתעכבת: תווים שנכתבים לא נשמרים מיד בקובץ. ה-Stream אוגר את המידע בזיכרון וכותב אותו בבלוקים כשהוא מתמלא, או כשסוגרים את הקובץ. Flush דוחף את המידע לקובץ לפני הסגירה.
7. אובייקט שנסגר: אחרי Dispose אי אפשר להמשיך לכתוב לאובייקט. ניסיון כזה גורם לשגיאה מסוג ObjectDisposedException.
בסיום השיעור ברור איך כותבים לקובץ טקסט, מדוע צריך לסגור אותו, ולמה שינוי הסיומת לא משנה את תוכנו.
השיעור הבא בקורס: קבצים - Files - חלק 4

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

  1. 00:00

    הכנה לכתיבה לקובץ טקסט

  2. 01:09

    הגדרת קובץ טקסט

  3. 03:49

    קבצים בינאריים

  4. 06:54

    מהו Stream קו תקשורת

  5. 09:32

    כתיבה לקובץ עם StreamWriter

  6. 12:05

    שימוש ב-Write ו-WriteLine

  7. 13:09

    סגירת קובץ עם Close ו-Dispose

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

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

  1. 00:05

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

  2. 00:28

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

  3. 01:10

    להסתכל על כל הקבצים בעולם ולחלק אותם לשתי קטגוריות בלבד סטטגוריה אחת זה קבצים שנחשבים קבצי טקסט. מהי ההגדרה של קובץ טקסט? ההגדרה של קובץ טקסט זה לא קובץ שמסתיים ב-txt ולא קובץ שמסתיים ב-doc כמו קובץ word לדוגמה.

  4. 01:35

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

  5. 01:50

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

  6. 02:11

    אז כאן אנחנו רואים שיש לנו את ה-myfile2.txt הזה, והוא קובץ טקסטואלי לגמרי, כי אנחנו מקודם כתבנו בו את המכור הזה ל-low all, ואלה תווים כמובן.

  7. 02:23

    הייתי הולך ומשנה את הסיומת הזאת לסיומת a,b,c,d,e עדיין הקובץ הזה היה נחשב קובץ טקסטואלי מפני שאנחנו יכולים לגשת ולפתוח אותו בעזרת notepad++ לדוגמה שזאת תוכנה מעולה שמומלצת אצל כל אחד במחשב שהיא מצליחה לפתוח לכם קבצים טקסטואליים אבל היא מיוחדת למתכנתים היא לפי הסיומת של

  8. 02:53

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

  9. 03:21

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

  10. 03:36

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

  11. 04:03

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

  12. 04:18

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

  13. 04:32

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

  14. 04:44

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

  15. 05:02

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

  16. 05:38

    הקובץ נכנס ל-a ואנחנו יכולים להסתכל ולראות שזה קובץ רגיל אם היינו פותחים אותו על ידי notepad שימו לב שיש המון דברים בתוך הקובץ שבכלל לא ניתן לקרוא אותם מה זה כל הג'יבריש הזה איפשהו בתוך כל הבלאגן הזה בטוח שקיימת המחרוזת Hello All בואו ננסה למצוא אותה אפילו הוא לא מצליח למצוא אותה אחלה מה בעצם וורד עשה

  17. 06:11

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

  18. 06:29

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

  19. 06:39

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

  20. 07:01

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

  21. 07:34

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

  22. 08:05

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

  23. 08:17

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

  24. 08:31

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

  25. 08:41

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

  26. 09:12

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

  27. 09:31

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

  28. 09:45

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

  29. 10:08

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

  30. 10:34

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

  31. 11:08

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

  32. 11:24

    בואו נפתח נתיב c test a myfile.txt בואו נסתכל ונראה שב-a אין לנו שום קובץ ואז אם אין קובץ אז ייווצר לנו אחד חדש אם קיים אז הוא יידרס הוא יימחק אם אנחנו לא רוצים שהוא יידרס ורק יתווסף אליו יש יש לנו פה אפשרות לשלוח true ולומר שאנחנו רוצים to append the data, כלומר להוסיף לסוף הקובץ שכבר קיים.

  33. 12:10

    בואו נישאר עם ה-true. ועכשיו אנחנו יכולים לגשת writer.oright או right line. בואו נתחיל עם right, נמשיך עם right line, ואם הייתי כותב כאן this is a there, הייתי יכול לכתוב second line, וזה היה נכון, ולא third line, מפני שזה נכתב בשורה הראשונה וגם זה נכתב

  34. 12:46

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

  35. 13:22

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

  36. 13:39

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

  37. 13:57

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

  38. 14:15

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

  39. 14:33

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

  40. 14:47

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

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

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

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

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

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

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

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