מדריך CSHTML – עבודה עם קבצים: קריאה ותצוגת נתונים מתוך קובץ
אחרי שכתבנו את הנתונים לקובץ טקסט, ברור הרי שמתישהו נצטרך גם לקרוא אותם… כדי לעשות זאת, נשתמש שוב באובייקט File. נוכל להשתמש בו לקרוא כל שורה בנפרד (שורות המופרדות על ידי מעברי שורה) או לקרוא פריטים יחידים שלא משנה האופן בו הם מופרדים אחד מהשני.
הליך זה מראה לנו כיצד לקרוא ולהציג את הנתונים שיצרנו בדוגמה הקודמת:
- צור קובץ חדש בשם DisplayData.cshtml
- נחליף את הקוד הקיים בזה:
@{ var result = ""; Array userData = null; char[] delimiterChar = {','}; var dataFile = Server.MapPath("~/App_Data/data.txt"); if (File.Exists(dataFile)) { userData = File.ReadAllLines(dataFile); if (userData == null) { // Empty file. result = "The file is empty."; } } else { // File does not exist. result = "The file does not exist."; } } <html> <head> <title>Reading Data from a File</title> </head> <body> <div> <h1>Reading Data from a File</h1> @result @if (result == "") { <ol> @foreach (string dataLine in userData) { <li> User <ul> @foreach (string dataItem in dataLine.Split(delimiterChar)) { <li>@dataItem</li> } </ul> </li> } </ol> } </div> </body> </html>
הקוד מתחיל לקרוא את הקובץ שיצרנו בדוגמה הקודמת לתוך משתנה בשם UserData, באמצעות קריאה לפונקציה File.ReadAllLines(dataFile). הדרך לעשות זאת היא בתוך משפט IF. כאשר נרצה לקרוא קובץ, כדאי להשתמש בפונקציה File.Exists כדי לבדוק תחילה אם הקובץ כבר קיים. בנוסף, הקוד גם בודק אם הקובץ הוא ריק מתוכן.
חלק ה- Body של הדף מכיל שתי לולאות foreach, אחד בתוך השניה. לולאת ה- foreach החיצונית מקבלת שורה אחת בכל פעם מקובץ הנתונים. במקרה זה, השורות מוגדרות על ידי מעברי שורה בקובץ, כלומר, כל פריט מידע נמצא בשורה נפרדת. הלולאה החיצונית יוצרת פריט חדש (תגית) בתוך רשימת ממוספרת.
הלולאה החיצונית מציגה גם מיספור רץ (באמצעות משתנה userCount). שימו לב שהמיספור מתחיל מ- 0.
הלולאה הפנימית מחלקת כל שורת נתונים לפריטים (שדות) בעזרת פסיק בתור מפריד. (בהתבסס על הדוגמה הקודמת, זה אומר שכל שורה מכילה שלושה שדות, שם פרטי, שם משפחה, וכתובת דואר אלקטרוני, כולם מופרדים באמצעות פסיקים) הלולאה הפנימית גם יוצרת רשימה שאינה ממוספרת המציגה פריט אחד עבור כל שדה בשורת הנתונים. הפונקציה File.ReadAllLines מחזירה נתונים כמערך. סוג הנתונים char נדרש משום שהפונקציה Split מקבלת מערך שבו כל רכיב הוא מסוג char.
- הפעל את הדף בדפדפן. כעת יוצגו הנתונים שהזנו בדוגמאות הקודמות:
תגובות בפייסבוק