
StreamReader מקבל את נתיב הקובץ ופותח אותו לקריאה. לפני הקריאה כדאי לסגור את הקובץ עם Dispose כדי לא לשכוח.Read מחזירה int, ולכן צריך קאסט ל-char. בלולאה בודקים את EndOfStream כל עוד לא הגענו לסוף הקובץ, ומדפיסים את התווים אחד אחרי השני.Read עם מערך תווים, אינדקס והכמות שרוצים לקרוא ממלא את המערך מהקובץ. כל קריאה ממשיכה מהמקום שבו נעצרה הקודמת.ReadLine מחזירה שורה שלמה בכל קריאה, ומחזירה null כשאין עוד שורות. זו הדרך הנפוצה כשכל שורה מייצגת פריט נפרד.ReadToEnd מחזירה את כל תוכן הקובץ כמחרוזת אחת.הטקסט המלא של הדקות הראשונות בהרצאה «קבצים - Files - חלק 4» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אנחנו רוצים לבצע קריאה מהקובץ הטקסטואלי. לצורך כך בואו נריץ את התוכנית הזאת מספר פעמים, נריץ אותה פעם ראשונה, נריץ אותה פעם שנייה ובזה שהרצנו אותה כמה פעמים אנחנו ביצענו פה append ואנחנו יכולים לראות שהקובץ הזה התמלא בכל מיני פעמים ששמרנו אותו.
ניקח את כל הקוד הזה ונשים אותו באיזושהי פונקציה, נקרא לה testStrainWriter וכעת אנחנו אנחנו יכולים לגשת ולכתוב פונקציה נוספת שמאפשרת לקרוא את המידע מהקובץ.
המחלקה שמאפשרת לנו לפתוח קובץ לצורך קריאה, קובץ טקסטואלי, נקראת Stream Reader. בואו ניתן לה את אותו הקובץ בדיוק.
הדבר הראשון שאני תמיד עושה, dispose כדי לא לשכוח לעשות את זה, ובין לבין יש לנו אפשרות לקרוא את הקובץ. אז אם אנחנו מתעסקים בקבצים טקסטואליים, יש לנו כמה שיטות לבצע קריאה של הקובץ.
בואו נסתכל על כל השיטות שקיימות. קודם כל יש לנו אפשרות to read תו בודד. למרות שהפונקציה read מחווירה integer, היא מסוגלת לקרוא תווים בודדים ומחווירה את התו כ-int.
אז אנחנו צריכים לבצע את הקריאה על ידי כמובן לולאה, אם אנחנו רוצים לקרוא תו תו בודד ולעשות איזושהי פעולה עם התווים לדוגמה להצפין אותם או משהו כזה.
בואו ננסה לבצע קריאה של תווים בודדים. בואו ניקח פה char ch כמובן אנחנו צריכים לבצע קאסטינג ל-char כי היא מחזירה int. למעשה לפני שאנחנו מבצעים קריאה כדאי לנו לבדוק האם יש לנו מה לקרוא כי יכול להיות שבכלל הקובץ ריק ולכן בואו נפתח תו או שאפילו בואו נעשה כזה דבר.
בואו ניקח לולאה שרצה color reader.end of stream זאת בעצם איזשהו פרופרטי בולעני שאומר האם הגענו לסוף הקובץ בתהליך הקריאה או לא. ומה שאנחנו יכולים לעשות זה פשוט לקחת את הtab reader.read נהפוך אותו ל-char ונציג אותו על המסך.
לבסוף נבצע dispose לקובץ, בואו נבדוק את זה. נכון, אנחנו צריכים כל עוד זה לא end of stream. וקיבלנו את כל הקובץ בדיוק כמו שהוא.
בואו אפילו ניגש לקובץ, ניפטר מכל אלה, ונראה שיש לנו כאן את הקובץ עצמו בדיוק כמו שהוא מופיע. אז זאת הייתה אפשרות אחת לבצע קריאה של קובץ.
פונקציית read מאפשרת גם לקבל מערך תווים, והיא יכולה פשוט לקרוא את המידע לתוך המערך. היא מקבלת מערך, אינדקס וקאונט וכמה אתם רוצים לקרוא ומאיפה.