Java ObjectInputStream

Java Objectinputstream



'למידע שנכתב דרך האובייקט של ObjectOutputStream ניגשים בעיקר באמצעות מחלקת ObjectInputStream. המטרה העיקרית של מחלקת ObjectInputStream תהיה לשחזר את הנתונים והישויות הבסיסיות המיוצרים על ידי שימוש במחלקה ObjectOutputStream. על ידי שימוש ב-SocketStream, ניתן להשתמש ב-ObjectInputStream גם להעברת אובייקטים בין מארחים שונים. לכן, החלטנו לכתוב מדריך מועיל עבור מערכת אובונטו 20.04 שלנו כדי להדיח את אובייקט המחלקה objectinputstream כדי לקרוא נתונים מזרם הקלט של הקבצים. בואו נתחיל עם פתיחת קונסולה.'

דוגמה 01

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







כדי לקרוא אובייקטים של זרם הקלט בתוכנת ג'אווה, עלינו לייבא את זרם הפלט. אז, יבאנו את החבילות 'java.io.ObjectInputStream' ו-'java.io.ObjectOutputStream' בהתחלה. יחד עם זה, כדי להכניס את הנתונים לקובץ, עלינו לייבא את ה-'java.io.FileInputStream' ו-'java.io.FileInputStream'. יצרנו מחלקה 'Main' שמחזיקה בפונקציה main() יחידה.



ביצוע הפונקציה מתחיל מהכרזה על משתנה מספר שלם 'd'. כדי למנוע יציאה פתאומית של התוכנית עקב שגיאות, הוספנו את הצהרת try-catch של java. החלק 'נסה' מתחיל באתחול של אובייקט זרם פלט קבצים 'f' דרך מחלקת FileOutputStream. העברנו את שם הקובץ 'new.txt' לאובייקט הזה 'f'. יצרנו זרם פלט אובייקט 'o' והעברנו את אובייקט הקובץ 'f' למחלקה ObjectOutputStream כדי להפוך קובץ לזרם פלט.



בשורה הבאה ממש, קראנו לפונקציה writeInt() של זרם הפלט של Java דרך אובייקט זרם הפלט 'o' כדי להעביר לו משתנה שלם 'd', כלומר לשמור אותו בקובץ. בשורה 12, יצרנו את זרם קלט הקבצים 'fs' באמצעות מחלקת FileInputStream של java על ידי העברת לו קובץ 'new.txt', כלומר, כבר יש בו נתונים. אובייקט זרם קלט קובץ זה 'fs' הועבר לאובייקט החדש שנוצר 'os' של מחלקה ObjectInputStream כדי לאפשר קריאה מזרם הקבצים. הפונקציה println() מחבילת 'System.out' של ה-java נדחתה לקרוא לפונקציה readInt() דרך אובייקט זרם קלט האובייקט 'os' כדי להציג את הנתונים מקובץ new.txt. לאחר מכן, סגרנו את זרם הפלט וזרם הקלט באמצעות האובייקטים המתאימים שלהם 'o' ו- 'os' תוך שימוש בפונקציית 'סגור' של טיפול בקבצים ב-Java. זהו שלב הכרחי לסגירת הזרמים כך שאף משתמש אחר לא יוכל להזין או להוציא נתונים מקובץ. בתוך המשפט catch() השתמשנו בפונקציה getStackTrace() כדי לקבל שגיאה ולהציג אותה על המסך באמצעות משתנה החריגה 'e'. תוכנית זו מוכנה לביצוע על המעטפת.





זה עתה שמרנו את קובץ קוד ה-Java שלנו לפני ביצועו והשתמשנו בהוראת מילת המפתח של Java כדי לבצע את הקובץ 'test.java'. זה לא מחזיר כלום בתמורה. כמו כן, הצגת הנתונים של קובץ טקסט 'new.txt' על המעטפת באמצעות הוראת 'חתול' הציגה ערך זבל. הסיבה לכך היא שרוב הזמן, ה-executor Java אינו מסוגל לקרוא את הערך השלם מהקובץ. אבל ככל הנראה, הוא יציג את הערך המדויק של מספר שלם.



בבדיקת קובץ new.txt על ידי פתיחה ידנית שלו, ראינו שפורמט Unicode של הערך הוצג בקובץ.

אם אינך מצליח להציג את הערך השלם מזרם הקבצים, תוכל להשתמש בפונקציה writeObject() בתוכנת java במקום בפונקציה writeInt() כדי לכתוב את הערך 'd' לזרם הקבצים דרך האובייקט 'o' כפי שמוצג. יחד עם זה, עליך לבטל את הפונקציה 'readObject()' במקום הפונקציה readInt() כדי להציג את הנתונים מזרם הקלט של הקובץ.

עדכון קוד זה יציג את הערך השלם בביצוע.

דוגמה 02

בוא יהיה ערך נוסף של תכנות ג'אווה כדי להוציא את זרם קלט האובייקט עבור ערך סוג המחרוזת. לפיכך, התחלנו את הקוד לדוגמה הזה עם הייבוא ​​של אותן מחלקות FileInputStream, FileOutputStream, ObjectInputStream ו-ObjectOutputStream של java מחבילת 'io' של ספריית java. למחלקה Main יש את הפונקציה main() שלה כדי להתחיל בביצוע קוד זה. משתנה מחרוזת 'd2' מאותחל עם ערך מחרוזת ארוכה.

אותה משפט try-catch נדחה כדי למנוע את השגיאה ולביצוע חלק של קוד Java זה. האובייקט 'f' עבור זרם הפלט של הקובץ נוצר באמצעות מחלקת FileOutputStream תוך שימוש ב-'new.txt' כארגומנט. אובייקט זרם הפלט של הקובץ 'f' הועבר לאובייקט זרם הפלט 'o' שנוצר על ידי שימוש במחלקה ObjectOutputStream. כעת, זרם הפלט 'o' קרא לפונקציה writeObject() על ידי העברת משתנה מחרוזת 'd' שייכתב בקובץ 'new.txt'.

לאחר מכן, יצרו זרם קלט קובץ 'fs' באמצעות מחלקת FileInputStream על ידי העברת לו שם קובץ 'new.txt', כלומר, כדי לקרוא את הנתונים ממנו. כעת, אובייקט המחלקה ObjectInputStream 'os' ישתמש באובייקט זרם קלט הקובץ 'fs' כדי לקרוא את הנתונים באמצעות הפונקציה readObject() של java במשפט הביצוע 'println' של המחלקה 'System.out'. לאחר מכן, אנו נוטים לסגור את זרמי הקלט והפלט על ידי קריאה לפונקציה 'סגור', והצהרת ה-catch מנוצלת כדי לקבל חריגים שקרו בחלק הנסיון ולהימנע מסגירה פתאומית של הפעלת תוכנית זו.

הביצוע של קובץ קוד Java זה וקובץ הטקסט הציגו את ערך המחרוזת במסוף.

סיכום

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