תכנות מתקדם ב-Java/זרמים: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות)
מאין תקציר עריכה
Johnny Zoo (שיחה | תרומות)
שורה 55:
 
==זרמים שכדאי להכיר==
הזרמים בג'אווה מתחלקים לזרמים של קריאה, וזרמים של כתיבה. כמו כן, ישנם זרמים המיועדים לקריאה של מידע גולמי, מול זרמים המיועדים לטקסט. בנוסף לזרמים בסיסיים אלו קיימים גם סוגים נוספים שתפקידם להעניק תכונות נוספות לזרמים קיימים באמצעות עטיפתם.
נעבור קטן על מספר מצומצם של זרמים.
 
===זרמים המיועדים לטקסט===
====קריאה====
המחלקה הבסיסית עבור זרמים המיועדים לקריאת טקסט נקראת Reader. זוהי מחלקה מופשטת, וקיימים עבורה כמה מחלקות שמרחיבות אותה. החשובות שבהן:
* המחלקה FileReader מיועדת לקריאה של קבצי טקסט.
* המחלקה StringReader מיועדת לקריאה של מחרוזות כזרם.
 
====כתיבה====
המחלקה הבסיסית עבור זרמים המיועדים לכתיבת טקסט נקראת (כצפוי) Writer. באופן זהה, גם היא מחלקה מופשטת לה קיימות כמה הרחבות אפשריות, ובהן:
* המחלקה FileWriter מיועדת לכתיבה בקבצי טקסט.
* המחלקה StringWriter מיועדת לכתיבה למחרוזות.
 
===זרמים המיועדים למידע גולמי===
===קריאה===
המחלקה הבסיסית עבור קריאה של מידע גולמי נקראת InputStream, ובדומה ל-Reader, היא מחלקה מופשטת. הרחבות עיקריות שלה:
* המחלקה FileInputStream מיועדת לקריאת קבצים.
 
===כתיבה===
המחלקה הבסיסית כאן היא OutputStream. הרחבות עיקריות:
* המחלקה FileOutputStream מיועדת לכתיבת מידע גולמי לקבצים.
 
שימו לב כי זרמים אלו מסוגלים להתמודד גם עם קבצי טקסט (כמו שאפשר לראות בדוגמה למעלה). עם זאת, מכיוון שהם מיועדים לעבודה עם מידע גולמי כלשהו (כלומר - אוסף של נתונים מטיפוס unsigned char), נוח יותר לעבוד עם הזרמים המיועדים לטקסט.
 
===זרמים נוספים===
* עבור כל סוגי הזרמים הבסיסיים שראינו, קיים זרם עוטף המצייד אותו בחוצץ זמני להחזקת הנתונים, כלומר - בכל פעם החוצץ הזמני קורא כמות מסויימת של נתונים ואוגר אותה. שמות זרמים אלו מתחילים תמיד במילה Buffered. למשל: BufferedInputStream, או BufferedWriter.