Download presentation
Presentation is loading. Please wait.
Published byHorace Cross Modified over 6 years ago
1
טיפול בקבצים ליווי מקצועי : ארז קלר
2
מבוא. טיפול בקבצים ובספריות. קבצי טקסט. קבצים בינאריים.
3
מבוא בכל התוכניות שהצגנו עד כה נשמר המידע בזיכרון המחשב (RAM).
כאשר התוכנית מסתיימת המידע נמחק ללא יכולת שיחזור. לא היינו רוצים שבכל פעם שנסגור את Word ימחק המסמך שכתבנו, מה היינו עושים ללא יכולת לשמור את המידע בקובץ? מערכות מחשבים משתמשות בקבצים על מנת לשמור מידע לטווח ארוך. הקבצים נשמרים בהתקנים כמו : דיסק קשיח, CD , DVD , פלאש וכו'.
4
מבוא ניתן לחלק את הקבצים לשתי משפחות עיקריות: קבצי הרצה , וקבצי מידע.
קבצי הרצה – תוכניות המחשב, קבצים המכילים את הוראות הביצוע למחשב, בדרך כלל עם סיומת exe או dll . קבצי מידע – קבצים השומרים מידע לטווח ארוך עבור תוכניות המחשב השונות, לדוגמה: קבצי טקסט (cs, txt), קבצים גראפיים (bmp, jpg, gif), קבצי אודיו/וידאו (mp3, wav, avi), קבצי מסמכים (doc, xsl, mdb), קבצים דחוסים (zip, rar) . קבצי המידע מחולקים לשתי משפחות עיקריות : קבצי טקסט, קבצים בינאריים. יחידת לימוד זו דנה בקבצי מידע בלבד.
5
מבוא קובץ טקסט קובץ בינארי
קובץ מידע אשר יכול להיקרא על ידי כל עורך טקסט, כגון : פנקס רשימות. בקובץ זה נשמרים ערכי ה- Unicode של הטקסט. הקובץ מסתיים בתו EOF המציין את סוף הקובץ. קובץ בינארי רצף תווים שאינו קריא על ידי עורכי הטקסט למיניהן, אלא רק על ידי התוכנית שיצרה אותו ומכירה את מבנהו. קטן יותר מאשר קובץ טקסט.
6
מבוא. טיפול בקבצים ובספריות. קבצי טקסט. קבצים בינאריים.
7
טיפול בקבצים ובספריות הטיפול בקבצים ובספריות מתבצע באמצעות מחלקות המוגדרות במרחב השמות System.IO . במרחב שמות זה מוגדרות מספר מחלקות באמצעותן ניתן לבצע פעולות על ספריות וקבצים. המחלקות Directory ו- DirectoryInfo - מספקות אוסף של שיטות ליצירה, מחיקה, העברה, טיפול וכו' של ספריות. בעוד הראשונה עושה זאת באמצעות שיטות סטאטיות השניה מחייבת הקצאת אובייקט. המחלקה File ו- FileInfo – מספקות אוסף של שיטות ליצירה, מחיקה, העתקה, שינוי, העברה, פתיחה של קבצים.
8
טיפול בקבצים ובספריות המחלקה Directory
נשתמש במחלקה זו לצורך עבודה בסיסית וחשובה על ספריות כגון:יצירה, העתקה, מחיקה, העברה, וקבלת מידע על ספריות. כל השיטות של מחלקה זו הן סטאטיות. השיטות המרכזיות: תיאור השיטה יצירת ספריה חדשה CreateDirectory מחיקת ספריה קיימת Delete שיטה בוליאנית באמצעותה ניתן לבדוק האם ספריה קיימת. Exist שיטה המחזירה את שמות תת הספריות של ספריה נתונה. GetDirectories שיטה המחזירה את שמות כל הקבצים בספריה נתונה. GetFiles
9
טיפול בקבצים ובספריות המחלקה Directory - המשך תיאור השיטה
שיטה המחזירה את שמות כל הכוננים המותקנים במערכת. GetLogicalDrives שיטה המחזירה את מחלקת האב של ספריה נתונה. GetParent העברת ספריה ממקומה. Move קבלת המיקום של "ספריית העבודה" של התוכנית, ,כברירת מחדל, ספריית העבודה היא הספריה בה נמצא קובץ ההרצה. GetCurrentDirectory קביעת מיקום אחר לספריית העבודה של התוכנית. SetCurrentDirectory קבלת זמן יצירת הספריה. GetCreationTime קבלת זמן הגישה האחרונה לספריה. GetLastWriteTime
10
טיפול בקבצים ובספריות המחלקה DirectoryInfo
נשתמש במחלקה זו לצורך עבודה בסיסית וחשובה על ספריות כגון:יצירה, העתקה, מחיקה, העברה, וקבלת מידע על ספריות. בניגוד למחלקה Directory , השיטות הן שיטות רגילות , הדורשות הקצאת אובייקט, והמחלקה מגדירה מאפיינים. השיטות המרכזיות: תיאור השיטה יצירת ספריה חדשה. Create מחיקת ספריה קיימת. Delete יצירת תת ספריה חדשה בספריה במיוצגת על ידי האובייקט. CreateSubdirectory שיטה בוליאנית באמצעותה ניתן לבדוק האם ספריה קיימת. Exist שיטה המחזירה את שמות תת הספריות של ספריה נתונה. GetDirectories שיטה המחזירה את שמות כל הקבצים בספריה נתונה. GetFiles
11
טיפול בקבצים ובספריות המחלקה DirectoryInfo מאפיינים מרכזיים: תיאור
המאפיין קבלת זמן יצירת הספריה. CreationTime מאפיין בוליאני באמצעותו ניתן לבדוק האם ספריה קיימת. Exists קבלת השם המלא של הספריה כולל הנתיב בו היא נמצאת. FullName קבלת שם הספריה. Name קבלת שם ספרית האב. Parent
12
טיפול בקבצים ובספריות דוגמאות
string[] directories_arr = DirectoryInfo info; foreach (string str in directories_arr) { info = new DirectoryInfo(str); Console.WriteLine("Directory Name : " + info.Name); Console.WriteLine("Create in : " +info.CreationTime); } קבלת שמות תתי הספריות של הספריה C:\MyDirectory מעבר סידרתי והדפסת מידע על כל הספריות הללו תוך שימוש ב- DirectoryInfo
13
טיפול בקבצים ובספריות דוגמאות בדיקה האם קיימת ספריה
if { } יצירת ספרייה חדשה DirectoryInfo info = new info.CreateSubdirectory("Shoshana"); יצירת תת ספרייה חדשה
14
קבלת רשימת הכוננים במחשב.
טיפול בקבצים ובספריות דוגמאות if { info.Delete(); } מחיקת ספרייה קיימת string[] drives_arr = Directory.GetLogicalDrives(); foreach (string str in drives_arr) { Console.WriteLine("Drive Name : " + str); } קבלת רשימת הכוננים במחשב.
15
טיפול בקבצים ובספריות המחלקה File
נשתמש במחלקה זו לצורך עבודה בסיסית וחשובה על קבצים כגון:יצירה, העתקה, מחיקה, העברה, וקבלת מידע על קבצים. כל השיטות של מחלקה זו הן סטאטיות. השיטות המרכזיות: תיאור השיטה העתקת הקובץ ותוכנו. Copy יצירת קובץ חדש. Create יצירת קובץ טקסטואלי חדש. CreateText מחיקת קובץ קיים. Delete מתודה הבודקת האם הקובץ הנתון קיים. Exists
16
טיפול בקבצים ובספריות המחלקה File - המשך תיאור השיטה
קבלת זמן יצירת הקובץ. GetCreationTime קבלת זמן הגישה האחרון לקובץ, GetLastAccessTime קבלת הזמן של הכתיבה האחרונה שהתבצעה לקובץ. GetLastWriteTime העברת הקובץ למיקום אחר. Move פתיחת קובץ לעבודה עם אובייקט FileStream (ילמד בהמשך) Open פתיחת קובץ טקסטואלי. OpenText פתיחת קובץ לכתיבה. OpenWrite קריאת כל השורות של הקובץ. ReadAllLines קיראת הקובץ כמקשה אחת. ReadAllText כתיבה מידע לקובץ. WriteAllText
17
טיפול בקבצים ובספריות המחלקה FileInfo
נשתמש במחלקה זו לצורך עבודה בסיסית וחשובה על קבצים כגון: יצירה, העתקה, מחיקה, העברה, וקבלת מידע על קבצים. בניגוד למחלקה File , השיטות הן שיטות רגילות , הדורשות הקצאת אובייקט, והמחלקה מגדירה מאפיינים. השיטות המרכזיות: תיאור השיטה פתיחת קובץ לכתיבת תוספת טקסט. AppendText העתקת קובץ קיים לקובץ אחר. Copy To פתיחת קובץ לכתיבה בינארית. Create פתיחת קובץ לכתיבת טקסטואלית. CreateText מחיקת קובץ קיים. Delete העברת קובץ למיקום אחר. MoveTo
18
טיפול בקבצים ובספריות המחלקה FileInfo - המשך תיאור השיטה Open
פתיחת קובץ לעבודה עם אובייקט FileStream (ילמד בהמשך) Open פתיחת קובץ בינארי. OpenRead פתיחת קובץ טקסטואלי. OpenText פתיחת קובץ לכתיבה. OpenWrite
19
טיפול בקבצים ובספריות המחלקה FileInfo מאפיינים מרכזיים: תיאור המאפיין
זמן יצירת הקובץ. CreationTime קבלת ספריית האב בה נמצא הקובץ. Directory קבלת שם ספריית האב. DirectoryName מאפיין בוליאני הבודק האם הקובץ קיים. Exists קבלת סיומת הקובץ. Extension קבלת שם הקובץ והמיקום. FullName בודק האם הקובץ לקריאה בלבד. IsReadOnly אורך הקובץ. Length
20
טיפול בקבצים ובספריות דוגמאות בדיקה האם קובץ קיים
if יצירת קובץ חדש העתקת קובץ @"c:\MyDir2\Directory1\MyFile.bin"); Source Destination
21
טיפול בקבצים ובספריות דוגמאות קבלת רשימת שמות קבצים בספריה נתונה.
קבלת רשימת שמות קבצים בספריה נתונה. string[] files_arr = foreach (string str in files_arr) { info = new FileInfo(str); Console.WriteLine("File Name : " + info.Name); Console.WriteLine("Extension : " + info.Extension); Console.WriteLine("Full Name : " + info.FullName); Console.WriteLine(info.CreationTime); } יצירת אובייקט FileInfo הדפסת פרטים טכניים על הקובץ
22
טיפול בקבצים ובספריות דוגמאות
string[] song_source = {"Shoshana, Shoshana, Shoshana,", "Yarech nisa el anan,", "Yavoho elaich Shoshana,", "Bayam od yaflig Capitan" }; song_source); כתיבת מידע לקובץ string[] song_dest = foreach (string str in song_dest) { Console.WriteLine(str); } קריאת מידע לקובץ
23
מבוא. טיפול בקבצים ובספריות. קבצי טקסט. קבצים בינאריים.
24
קבצי טקסט ישנן כמה דרכים בהן ניתן לשמור מידע או לקרוא מידע (איחזור) מידע מקובץ טקסט. ניתן להשתמש במחלקה File אשר לה יכולות פשוטות של כתיבה/קריאה מקובץ. ניתן להשתמש במחלקה StreamWriter על מנת לכתוב לקובץ, וב- StreamReader על מנת לקרוא מקובץ.
25
קבצי טקסט דוגמה כתיבה לקובץ באמצעות המחלקה File
string[] song_source = {"Shoshana, Shoshana, Shoshana,", "Yarech nisa el anan,", "Yavoho elaich Shoshana,", "Bayam od yaflig Capitan" }; song_source); כתיבת מערך מחרוזות כתיבת מחרוזת בודדת "Shoshana, Shoshana, Shoshana, Yarech nisa el anan, Yavoho elaich Shoshana,Bayam od yaflig Capitan ...");
26
קבצי טקסט דוגמה קריאה מקובץ באמצעות המחלקה File
קריאת כל הקובץ למערך של מחרוזות string[] song_dest = foreach (string str in song_dest) { Console.WriteLine(str); } קריאת כל הקובץ למחרוזת אחת. string str = Console.Write(str);
27
חובה – סגירת המשאב בסיום הכתיבה
קבצי טקסט דוגמה כתיבה לקובץ באמצעות המחלקה StreamWriter הקצאת StreamWriter StreamWriter sw = new object[] data = {"shoshana", 10, 12.34f, 'c', 167, "Yerachmiel",45.5}; for (int i = 0; i < data.Length; i++) { sw.WriteLine(data[i]); } sw.Close(); כתיבת שורה בקובץ חובה – סגירת המשאב בסיום הכתיבה
28
חובה – סגירת המשאב בסיום הכתיבה
קבצי טקסט דוגמה קריאה מקובץ באמצעות המחלקה StreamReader StreamReader sr = new string str; do { str = sr.ReadLine(); Console.WriteLine(str); } while (str != null); sr.Close(); הקצאת StreamReader קריאת שורה מקובץ חובה – סגירת המשאב בסיום הכתיבה
29
קבצי טקסט דוגמה ניתן להקצות אובייקט StreamReader גם באמצעות המחלקה File: StreamWriter sw = StreamReader sr =
30
קבצי טקסט מבוא. טיפול בקבצים ובספריות. קבצי טקסט. קבצים בינאריים.
31
קבצים בינאריים המחלקות המשתתפות
המחלקה FileStream מאפשרת כתיבה וקריאה של בתים (Bytes) בלבד לקובץ ומקובץ בינארי. בדרך כלל, לא נעבוד ישירות עם אובייקט ממחלקה זו בגלל שהוא מסוגל לטפל רק בטיפוס Byte . המחלקה BinaryWriter מאפשרת כתיבה לקובץ בינארי. המחלקה BinaryReader מאפשרת קריאה מקובץ בינארי. שתי המחלקות הללו מתבססות על FileStraem כדי לכתוב או לקרוא מידע מקובץ בינארי.
32
קבצים בינאריים המחלקה FileStream
אובייקט ממחלקה זו מאפשר לפתוח קובץ לכתיבה/קריאה ולכתוב או לקרוא בתים. ניתן לבצע פעולות בגישה סדרתית על הקובץ או פעולות בגישה אקראית . בגישה סדרתית כל המידע נכתב או נקרא מהבית הראשון ועד האחרון ללא קפיצות. בגישה אקראית ניתן לבצע חיפוש בקובץ ולקפוץ ממקום למקום בתוך הקובץ. הגישה האקראית אינה נלמדת ביחידת לימוד זאת.
33
קבצים בינאריים המחלקה FileStream
enum FileMode - הנחייה למערכת ההפעלה כיצד לפתוח את הקובץ, כגון : FileMode.Create – במידה והקובץ לא קיים ליצור אותו, במידה והוא קיים לדרוס אותו. FileMode.Append – פתיחת הקובץ בסופו לצורך הוספת מידע למידע שכבר שמור בו. FileMode.CreateNew – יצירת קובץ חדש, במידה והוא קיים הפעולה נכשלת. enum FileAccess – הנחייה הקובעת האם לפתוח את הקובץ לכתיבה, קריאה, או כתיבה וקריאה.
34
קבצים בינאריים המחלקה FileStream לדוגמה הקצאת אובייקט FileStream
FileStream fs = new FileStream("Binary.bin",FileMode.Create,FileAccess.Write); שם הקובץ דריסת קובץ קיים או יצירת חדש קובץ לכתיבה הפרמטר השלישי אינו חובה, הוא מוגדר באמצעות המחלקה בה משתמשים , והיא מגדירה האם הקובץ נפתח לקריאה או לכתיבה.
35
קבצים בינאריים כתיבה לקובץ באמצעות BinaryWriter
BinaryWriter נעזר באובייקט FileStream על מנת לשלוח את המידע לקובץ בצורה בינארית. לדוגמה: הקצאת אובייקט FileStream FileStream fs = new FileStream("Binary.ptg", FileMode.Create, FileAccess.Write); BinaryWriter bw = new BinaryWriter(fs); מסתמך על אובייקט FileStream הקצאת אובייקט BinaryWriter
36
קבצים בינאריים כתיבה לקובץ באמצעות BinaryWriter דוגמה FileStream fs =
new FileStream("Binary.ptg", FileMode.Create, FileAccess.Write); BinaryWriter bw = new BinaryWriter(fs); for (int i = 0; i < 10; i++) { num = rnd.Next(100) + 1; bw.Write(num); } bw.Close(); fs.Close(); הקצאת אובייקט BinaryWriter לצורך כתיבה לקובץ כתיבה לקובץ חובה - סגירת המשאבים בסיום הפעולה
37
קבצים בינאריים קריאה מקובץ באמצעות BinaryReader
BinaryReader נעזר באובייקט FileStream על מנת לקרוא את המידע מהקובץ הבינארי. לדוגמה: הקצאת אובייקט FileStream FileStream fs = new FileStream("Binary.ptg", FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fs); מסתמך על אובייקט FileStream הקצאת אובייקט BinaryReader
38
קבצים בינאריים קריאה מקובץ באמצעות BinaryReader דוגמה
fs = new FileStream("Binary.ptg", FileMode.Open,FileAccess.Read); BinaryReader br = new BinaryReader(fs); for (int i = 0; i < 10; i++) { Console.WriteLine(br.ReadInt32()); } br.Close(); fs.Close(); הקצאת אובייקט BinaryReader לצורך קריאה מקובץ קריאה מקובץ חובה - סגירת המשאבים בסיום הפעולה
39
קבצים בינאריים מתודות לקריאה וכתיבה
המחלקה BinaryWriter מגדירה את המתודה BinaryWriter.Write(...) אשר באמצעותה נכתוב מידע לקובץ בינארי. למעשה המחלקה מגדירה הרבה מאוד מתודות בשם Write (העמסת מתודות), אשר כל אחת מהן יודעת לכתוב לקובץ בינארי טיפוס אחר. לדוגמה: BinaryWriter.Write (Boolean) BinaryWriter.Write (Byte) BinaryWriter.Write (Decimal) BinaryWriter.Write (Double) BinaryWriter.Write (Int16) BinaryWriter.Write (Int32) BinaryWriter.Write (Int64) BinaryWriter.Write (Single) BinaryWriter.Write (String) BinaryWriter.Write (UInt32)
40
קבצים בינאריים מתודות לקריאה וכתיבה
המחלקה BinaryReader מגדירה את מספר רב של מתודות לקריאת מידע מקובץ בינארי, לדוגמה : BinaryReader. ReadBoolean() BinaryReader.ReadByte() BinaryReader.ReadDouble() BinaryReader.ReadDecimal() BinaryReader.ReadInt16() BinaryReader.ReadInt32() BinaryReader.ReadInt64() BinaryReader.ReadString() BinaryReader. ReadSingle() BinaryReader.ReadUInt16() BinaryReader.ReadUInt32()
41
קריאת המידע מהקובץ בסדר זהה לכתיבה
קבצים בינאריים סדר הקריאה חייב להיות זהה לסדר הכתיבה FileStream fs = new FileStream("MyFile.bin", FileMode.Create); BinaryWriter bw = new BinaryWriter(fs); bw.Write("Shoshana"); bw.Write(12); bw.Write( f); bw.Close(); fs.Close(); string str; int num; float fnum; fs = new FileStream("MyFile.bin", FileMode.Open); BinaryReader br = new BinaryReader(fs); str= br.ReadString(); num = br.ReadInt32(); fnum = br.ReadSingle(); br.Close(); כתיבת מידע לקובץ קריאת המידע מהקובץ בסדר זהה לכתיבה
42
טיפול בקבצים עריכה מקצועית : ארז קלר. www.corner.co.il מבוא.
טיפול בקבצים ובספריות. קבצי טקסט. קבצים בינאריים. עריכה מקצועית : ארז קלר.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.