
Write של BinaryWriter מקבל ערכים מכל טיפוס, והקומפיילר בוחר את ההעמסה לפי הטיפוס. מספר 1 מסוג int נשמר כארבעה בתים, ומספר 1 מסוג byte נשמר כבית אחד. לכן הטיפוס שנשמר חשוב.הטקסט המלא של הדקות הראשונות בהרצאה «קבצים - Files - חלק 6» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
נבצע פייל ניו פרוג'קט והדבר הראשון שאני רוצה לבצע זה להבין מה בעצם ההבדל בין קובץ בינארי לקובץ טקסטואלי אז בואו נפתח פה project difference between text file and binary file ואנחנו הולכים לראות משהו מאוד מעניין שלא הרבה שמים לב אליו והוא בעצם קובע את ההבדל בין קובץ טקסטואלי לקובץ בינארי ומה שאני רוצה לעשות זה משהו מאוד מאוד פשוט
מה שאני רוצה לעשות זה לפתוח משתנה אחד ויחיד מסוג float, נקרא לו number ונכניס אליו את המספר 123.456 בגלל ש-123.456 זה מספר עשרוני ובעצם זה מספר עשרוני ואפשר להתייחס אליו כאילו שהוא קבוע עשרוני כמובן ואנחנו יודעים שלקבועים יש טיפוסי נתונים הטיפוס נתונים בשפות c עבור קבוע זה דאבל
אז כל מה שאנחנו צריכים לעשות זה להפוך אותו ל-float והנה יש לנו מספר floaty1 אנחנו יכולים להציג אותו ולראות שאכן זה המספר שאנחנו רואים ומה שאני רוצה לעשות אני רוצה לשמור את המספר הזה רק את המספר הזה לקובץ טקסטואלי ולשמור את המספר הזה לקובץ בינארי ואז לבצע איזושהי השוואה ביניהם ואתם הולכים לראות משהו מאוד מעניין בנוגע לזה.
איך אנחנו שומרים את המספר לקובץ טקסטואלי? streamwriter כמו שראינו writer שווה new streamwriter נתחבר לאיזשהו קובץ בואו ניקח את תיקיית temp או test letter דיוק בקונן c ובתוכה תיקיית a ונשמור את זה ל myfile.txt writer.write שימו לב שאני אפילו לא רוצה לרשום right line כן, רק לרשום את המספר
נטו בלבד ו-writer.dispose וזה כל מה שאני רוצה לעשות. אוקיי, בואו נריץ את זה. התוכנית הסתיימה ואני רוצה לגשת ולהסתכל על הקובץ ואני רואה אותו כאן. אם אני פותח אותו אני כמובן רואה את המספר בתוכו והכל בסדר.
עכשיו אני רוצה לבצע שמירה של אותו המספר בדיוק גם לקובץ בינארי. בואו נפתח פה מקום. אז ראשית, איך אנחנו בעצם שומרים את המספר הזה לקובץ בינארי?
אז אנחנו צריכים לשמור על ידי בינארי רייטר וכמובן לקרוא על ידי בינארי רידר. בואו ניקח כאן את המשתנה הראשון, נקרא לו טקסט רייטר, כדי שלא יפריע לנו ליצור את המשתנה השני שיהיה בינארי רייטר.
אבל הבעיה היא שהקונסטרקטור של המחלקה בינארי רייטר לא מקבלת נתיב לקובץ טקסטואלי וזה אומר שאנחנו צריכים לפתוח סטרים.
אז איך אנחנו פותחים סטרים? על ידי פייל סטרים. פייל סטרים זה סטרים ספציפי לתוך קובץ שלא מגדיר האם אנחנו כותבים לתוכו או האם אנחנו קוראים ממנו.
אנחנו יכולים לפתוח סטרים בצורה כזאתי, נקרא לזה בינארי סטרים לצורך כתיבה וכל מה שאנחנו צריכים לעשות זה file.create זה בעצם פותח לנו סטרים ואנחנו יכולים לבצע כתיבה לתוכו, כלומר הסטרים שנפתח לנו מצביע לנו על קובץ שפה אנחנו נותנים את הנתיב שלו ואנחנו אוטומטית יכולים לכתוב לקובץ, זאת אומרת שהסטרים שנפתח הוא מיועד לכתיבה.
לכן אנחנו יכולים עכשיו להתחבר לאיזשהו קובץ או ליצור איזשהו קובץ, ניקח טקסט תקיית a myfile ולא ניקח אותו txt ניקח אותו bin שזה קיצור של בינארי עכשיו אחרי שיש לנו בינארי סטרים אנחנו יכולים לתת אותו לבינארי רייטר ולא לשכוח בסוף לסגור את שניהם כאשר כל הזמן הסגירות צריכות להיות הפוכות לפתיחות זאת אומרת מי שנסגר אחרון נפתח ראשון בינארי רייטר נקודה dispose ו-BinaryStream.dispose בצורה
כזאת. עכשיו כאן כאשר אנחנו רוצים לבצע שמירה אז כל מה שאנחנו צריכים לעשות זה BinaryWriter.write ושימו לב שאין לנו right line זאת קודם כל נקודה שהיא בסיסית ואחד ההבדלים הבסיסיים בין קובץ טקסטואלי לקובץ בינארי.
קובץ טקסטואלי בגלל שהמטרה שלו זה שבן אדם יסתכל עליו ויקרא אותו אז יש לנו שם המידע שמוצג כתווים שניתן לקרוא אותם ובנוסף יש לנו שורות שורות שכל שורה מסתיימת באנטר אז אנחנו היינו יכולים לבצע רייטליין ולכתוב שורה אחת ואוטומטית הייתה מתבצעת
ירידת שורה בתוך הקובץ אבל כאשר אנחנו מתעסקים עם קבצים בינאריים אנחנו לא כותבים פה שורות ואנחנו לא כותבים פה טקסטים אנחנו כותבים פה מה שנקרא מידע טהור לכן כל מה שיש לנו פה זה פונקציית right והיא אומרת לנו מה המידע שאתה רוצה לכתוב שימו לב שיש לנו פה מלא מלא מלא מלא העמסות בואו נרשום פה num כי זה המידע שאני רוצה לכתוב
אני רוצה לבצע השוואה בול מול קובץ טקסטואלי לקובץ בינארי לכן כתבתי את אותו הדבר ומה שאני רוצה לעשות זה להריץ את זה ctrl f5 תוכנית רצה הסתיימה אני רוצה לחזור לתיקייה ולראות את שני הקבצים אחד ליד השני והנה אני רואה פה myfile.txt והנה אני רואה פה myfile.bin אם אנחנו מבצעים קריאה של הקובץ myfile.txt על ידי notepad אנחנו כמובן רואים את המספר
123.456 אם אנחנו מבצעים קריאה של myfile על ידי notepad כלומר נבצע בדיוק את אותו הדבר