
myFile.txt לטקסט ו-.bin לבינארי. הסיומת לא מחייבת, והיא משמשת בעיקר את Windows כדי למצוא תוכנה מתאימה, אבל נוח לשמור על הסדר.FileWriter בלולאה, עם write לכל איבר ורווח ביניהם. ההפרדה חיונית, אחרת המספרים יתחברו למחרוזת אחת שאי אפשר לקרוא. הסגירה ב-finally.FileOutputStream כותב בתים גולמיים, ו-ObjectOutputStream עטוף סביבו מציע writeInt, writeFloat, writeBoolean ועוד, ולכן נוח יותר. בלולאה כותבים בית בודד לכל איבר בעזרת writeByte. סוגרים קודם את ה-ObjectOutputStream ואז את ה-FileOutputStream.ObjectOutputStream מוסיף, ואחריהם עשרה בתים. ב-Notepad++ הם מופיעים כאות d, כי 100 הוא קוד ה-ASCII של d. ב-Binary Editor של Visual Studio רואים את הערך 64, שהוא 100 בהקסדצימלי.הטקסט המלא של הדקות הראשונות בהרצאה «Compare Text to Binary» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו מגיעים לקבצים בינאריים והדבר הראשון שאנחנו הולכים לעשות זה להבין מה זה בדיוק קובץ בינארי ומה ההבדל בינו לבין קובץ טקסט. אז אנחנו אמרנו שקובץ טקסט זה כל קובץ שמכיל מידע טקסטואלי, כלומר תווים.
קובץ בינארי זה קובץ שמכיל כל מידע אחר, זה יכול להיות פיקסלים, זה יכול להיות סאונד, זה יכול להיות וידאו, זה יכול להיות מידע משלנו, אבל אם זה מידע משלנו אז המידע הזה הוא פשוט העתק של הזיכרון כפי שהוא מופיע ברם.
הדבר הראשון שאנחנו הולכים לעשות זה פשוט לבצע איזושהי השוואה בין קובץ טקסט לקובץ בינארי בכדי להבין יותר טוב מה יש בקבצים בינאריים. אז יש לנו פה לחצן אחד שדרכו אנחנו הולכים לכתוב לקובץ טקסט ולחצן שני שדרכו אנחנו הולכים לכתוב את אותו המידע בדיוק לקובץ בינארי ואז נבצע את ההשוואה ביניהם.
המידע שאנחנו הולכים לכתוב לקובץ טקסט ולקובץ בינארי זה סך הכל מערך, בואו ניצור אותו פה, של עשרה בתים בלבד. כל בית הולך להיות פשוט המספר 100. אז בואו ניקח את הערך הזה ונשכפל אותו עשר פעמים.
3, 4, 5, 6, 7, 8, 9, 10. והנה יש לנו כאן מערך של עשרה בתים. כל אחד מהתאים האלה יש בו את המספר 100 והוא תופס בית אחד בזיכרון. ואנחנו רוצים לכתוב את הערך הזה גם לקובץ טקסטואלי וגם לקובץ בינארי.
ואז להבין יותר טוב מה יש בהם. הדבר הבא שאנחנו רוצים שיהיה לנו זה full path and file name, עבור קובץ הטקסט ואותו הדבר עבור הקובץ הבינארי.
בואו ניקח ונכניס לתוכה מערכים. פול פאט' עבור הטקסט יהיה get file זדיר, get absolute path ונשרשר את myfile.txt. דרך אגב, אתם לא חייבים שהסיומת תהיה txt עבור כל קובץ שהוא, עדיין יכול להיות קובץ עם איזה סיומת שאתם רוצים ABC והוא יכול להיות מידע טקסטואלי בתוכו או מידע בינארי.
הסיומת זה רק בשביל שמערכת הפעלה בדרך כלל מסוג Windows תוכל לאתר את התוכנה הנכונה בכדי לפתוח את הקובץ, אבל עדיין הקובץ יכול להחזיק מידע גם אפילו אם אין לו סיומת בכלל.
אבל לצורך הדוגמה ולצורך ההיגיון כן נגדיר סיומת, באמת txt עבור קבצי טקסט וbin עבור קבצים בינאריים. אז בואו נגדיר פה שאנחנו רוצים את המידע הבינארי, ואנחנו יכולים עכשיו לבצע את הכתיבה לקובץ הטקסטואלי.
אז היה לנו פייל רייטר, הנה הפייל רייטר, שווה ל-null, אנחנו מתחילים עם try catch exception כללית, איזושהי הודעת שגיאה במידה ומאיזושהי סיבה זה לא יצליח בצורה כזאת ב-finally אנחנו רוצים לבצע סגירה אז נבדוק אם הפייל רייטר הוא לא נל יש בו אובייקט אמיתי פייל רייטר קלוז נעטוף גם את זה ב-try catch עם אקספשן כללית
והנה יש לנו כאן את כל מה שאנחנו צריכים עבור התחלה של הכתיבה עצמה. נסדר פה טיפה, ופה אנחנו מעוניינים לפתוח פייל רייטר, אובייקט חדש, ניתן לו את full path and file name עבור קובץ ה-text, ונרוץ בלולאה עד array length.
כל מה שנעשה זה פייל רייטר, נקודה write, ונרשום את ה-ray במיקום i, כאשר מה שאנחנו רוצים לעשות זה לבצע איזושהי הפרדה בעצם בין מספר למספר. למה? כי אנחנו נמצאים בקובץ טקסטואלי, אם אנחנו לא נבצע את ההפרדה הזאת, אז אם נניח יהיה לנו פה סתם איזה מכרוזת ריקה, אז בעצם כל המספרים האלה ייכתבו כמכרוזת אחת ואי אפשר לקרוא את זה.
קובץ טקסט מיועד בשביל קריאה ולכן בין מידע למידע כנראה או שיש רווח או שיש enter אז נשמור על הפורמט הזה ונציג פה איזושהי הודעה של done בצורה כזאת ואנחנו עכשיו יכולים לבצע קופי של כל הסיפור הזה ונבצע כאן paste והנה יש לנו עכשיו את הכתיבה לקובץ הבינארי מה אנחנו צריכים לשנות אז קודם כל במקום
פייל רייטר אנחנו צריכים אובייקט שנקרא פייל output stream בואו ניצור אובייקט ממנו בנוסף אנחנו צריכים אובייקט נוסף שנקרא אובייקט output stream עכשיו הפייל output stream מסוגל לרשום בתים בודדים לקובץ הבינארי Object Output Stream מסוגל לרשום את כל הטיפוסים שנרצה, ולכן אנחנו רוצים להשתמש עם ה-Object Output Stream לצורך הכתיבה עצמה.
אנחנו רוצים לבנות אובייקטים, אז בואו נבנה File Output Stream וניתן לו את Full Path End File Name עבור הקובץ הבינארי, ועבור ה-Object Output Stream אנחנו רוצים לתת את ה-File Output Stream.
עכשיו שוב אם היינו באים לפייל output stream ובאים ואומרים תכתוב לי בבקשה אתם רואים שהוא כן יכול לבצע כתיבה אבל הוא אומר תביאו לי בתים טהורים שזה קצת קשה לעבודה מה זאת אומרת בתים ואם אני רוצה לרשום את המחוזת הלו מה הבתים שלה ואם אנחנו עובדים עם object output stream אז הוא כבר נותן לנו הרבה הרבה אפשרויות right int right bytes right float right boolean
ולכן הרבה יותר קל לעבוד עם Object Output Stream. הדבר הבא שאנחנו רוצים זה לגשת ל-Object Output Stream ו-To Write אבל בית אחד ויחיד,