PracticU

Compare Text to Binary

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Compare Text to Binary
מילון מושגים:
בינארי - ייצוג מידע בבסיס 2 בעזרת הספרות 0 ו-1. גם קובץ הכולל קוד מכונה ולא טקסט קריא.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
RAM - זיכרון הגישה האקראית של המחשב, מהיר ונדיף, שבו נשמרים נתונים ותוכניות בזמן ריצתם.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
ASCII - תקן לקידוד תווים שמייצג אותיות, ספרות וסימנים כמספרים, ומשמש בסיס לייצוג טקסט במחשב.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.
הקסדצימלי - שיטת ספירה בבסיס 16, המשתמשת בספרות 0-9 ובאותיות A-F, ונפוצה לייצוג ערכים בינאריים בקצרה.

Compare Text to Binary
קובץ טקסט מכיל תווים, וקובץ בינארי מכיל כל מידע אחר: פיקסלים, סאונד, וידאו, או מידע משלנו שהוא העתק של הזיכרון כפי שהוא מופיע ב-RAM. בשיעור כותבים אותו מערך של עשרה בתים לשני סוגי הקבצים ומשווים את התוצאה.
הניסוי
1. המידע: מערך של 10 בתים, בכל אחד המספר 100.
2. הנתיבים: myFile.txt לטקסט ו-.bin לבינארי. הסיומת לא מחייבת, והיא משמשת בעיקר את Windows כדי למצוא תוכנה מתאימה, אבל נוח לשמור על הסדר.
3. כתיבת טקסט: FileWriter בלולאה, עם write לכל איבר ורווח ביניהם. ההפרדה חיונית, אחרת המספרים יתחברו למחרוזת אחת שאי אפשר לקרוא. הסגירה ב-finally.
4. כתיבת בינארי: FileOutputStream כותב בתים גולמיים, ו-ObjectOutputStream עטוף סביבו מציע writeInt, writeFloat, writeBoolean ועוד, ולכן נוח יותר. בלולאה כותבים בית בודד לכל איבר בעזרת writeByte. סוגרים קודם את ה-ObjectOutputStream ואז את ה-FileOutputStream.
מה רואים בקבצים
- טקסט, 40 בתים: המספר 100 הומר לשלושה תווים ועם הרווח נוצרו ארבעה תווים לכל מספר.
- בינארי, 16 בתים: בתחילת הקובץ יש שישה בתים של פתיח ש-ObjectOutputStream מוסיף, ואחריהם עשרה בתים. ב-Notepad++ הם מופיעים כאות d, כי 100 הוא קוד ה-ASCII של d. ב-Binary Editor של Visual Studio רואים את הערך 64, שהוא 100 בהקסדצימלי.
מסקנות
קובץ בינארי קטן הרבה יותר, מהיר יותר (אין המרה לתווים ובחזרה), וקשה יותר לקריאה, כי זה העתק של הזיכרון ולא טקסט.
כעת אפשר להסביר מה ההבדל בין קובץ טקסט לבינארי, ומדוע אותו מידע תופס מקום שונה בכל אחד.
השיעור הבא בקורס: Write and Read Binary File

פרקי ההרצאה: Compare Text to Binary

  1. 00:00

    ההבדל בין קובץ טקסט לבינארי

  2. 00:40

    מערך של עשרה בתים להשוואה

  3. 01:58

    נתיבים וסיומות לקבצים

  4. 03:13

    כתיבת המערך לקובץ טקסט

  5. 04:44

    הפרדה בין ערכים בקובץ טקסט

  6. 05:26

    FileOutputStream ו-ObjectOutputStream

  7. 06:44

    יתרונות ObjectOutputStream בכתיבה

תמלול ההרצאה: Compare Text to Binary

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

  1. 00:02

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

  2. 00:21

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

  3. 00:41

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

  4. 01:05

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

  5. 01:29

    3, 4, 5, 6, 7, 8, 9, 10. והנה יש לנו כאן מערך של עשרה בתים. כל אחד מהתאים האלה יש בו את המספר 100 והוא תופס בית אחד בזיכרון. ואנחנו רוצים לכתוב את הערך הזה גם לקובץ טקסטואלי וגם לקובץ בינארי.

  6. 01:51

    ואז להבין יותר טוב מה יש בהם. הדבר הבא שאנחנו רוצים שיהיה לנו זה full path and file name, עבור קובץ הטקסט ואותו הדבר עבור הקובץ הבינארי.

  7. 02:08

    בואו ניקח ונכניס לתוכה מערכים. פול פאט' עבור הטקסט יהיה get file זדיר, get absolute path ונשרשר את myfile.txt. דרך אגב, אתם לא חייבים שהסיומת תהיה txt עבור כל קובץ שהוא, עדיין יכול להיות קובץ עם איזה סיומת שאתם רוצים ABC והוא יכול להיות מידע טקסטואלי בתוכו או מידע בינארי.

  8. 02:40

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

  9. 02:55

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

  10. 03:18

    אז היה לנו פייל רייטר, הנה הפייל רייטר, שווה ל-null, אנחנו מתחילים עם try catch exception כללית, איזושהי הודעת שגיאה במידה ומאיזושהי סיבה זה לא יצליח בצורה כזאת ב-finally אנחנו רוצים לבצע סגירה אז נבדוק אם הפייל רייטר הוא לא נל יש בו אובייקט אמיתי פייל רייטר קלוז נעטוף גם את זה ב-try catch עם אקספשן כללית

  11. 04:06

    והנה יש לנו כאן את כל מה שאנחנו צריכים עבור התחלה של הכתיבה עצמה. נסדר פה טיפה, ופה אנחנו מעוניינים לפתוח פייל רייטר, אובייקט חדש, ניתן לו את full path and file name עבור קובץ ה-text, ונרוץ בלולאה עד array length.

  12. 04:32

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

  13. 05:04

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

  14. 05:38

    פייל רייטר אנחנו צריכים אובייקט שנקרא פייל output stream בואו ניצור אובייקט ממנו בנוסף אנחנו צריכים אובייקט נוסף שנקרא אובייקט output stream עכשיו הפייל output stream מסוגל לרשום בתים בודדים לקובץ הבינארי Object Output Stream מסוגל לרשום את כל הטיפוסים שנרצה, ולכן אנחנו רוצים להשתמש עם ה-Object Output Stream לצורך הכתיבה עצמה.

  15. 06:20

    אנחנו רוצים לבנות אובייקטים, אז בואו נבנה File Output Stream וניתן לו את Full Path End File Name עבור הקובץ הבינארי, ועבור ה-Object Output Stream אנחנו רוצים לתת את ה-File Output Stream.

  16. 06:42

    עכשיו שוב אם היינו באים לפייל output stream ובאים ואומרים תכתוב לי בבקשה אתם רואים שהוא כן יכול לבצע כתיבה אבל הוא אומר תביאו לי בתים טהורים שזה קצת קשה לעבודה מה זאת אומרת בתים ואם אני רוצה לרשום את המחוזת הלו מה הבתים שלה ואם אנחנו עובדים עם object output stream אז הוא כבר נותן לנו הרבה הרבה אפשרויות right int right bytes right float right boolean

  17. 07:10

    ולכן הרבה יותר קל לעבוד עם Object Output Stream. הדבר הבא שאנחנו רוצים זה לגשת ל-Object Output Stream ו-To Write אבל בית אחד ויחיד,

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: External Storage

ההרצאה הבאה: Write and Read Binary File

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

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון