קריאה וכתיבה בקבצים

הושלם

קריאת נתונים מקבצים וכתיבה של נתונים לקבצים הם מושגים עיקריים ב- .NET.

Tailwind Traders צריך לכתוב את הסכום הכולל של כל קבצי המכירות של האחסון הבודד לקובץ חדש, ולאחר מכן לטעון את הקובץ במערכת המכירות של החברה.

כאן, תלמד כיצד להשתמש בכיתה File כדי לקרוא קבצים ולכתוב בהם.

קריאת נתונים מקבצים

קבצים מוקראים באמצעות ReadAllText השירות של File המחלקה.

File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");

האובייקט המוחזר ReadAllText הוא מחרוזת.

{
  "total": 22385.32
}

ניתוח מבנה טקסט של נתונים בקבצים

נתונים אלה בתבנית המחרוזת לא עושים לך כל כך טוב. אלה עדיין תווים בלבד, אך כעת בתבנית שניתן לקרוא. אתה מעוניין ביכולת לנתח נתונים אלה לתבנית שניתן להשתמש בה באופן תיכנותי.

קיימות דרכים רבות לניתוח קבצי JSON באמצעות .NET, כולל ספריית קהילה שנקראת Json.NET.

באפשרותך להוסיף את Json.NET לפרוייקט באמצעות NuGet:

dotnet add package Newtonsoft.Json

לאחר מכן, using Newtonsoft.Json בחלק העליון של קובץ הכיתה:

using Newtonsoft.Json; 

והשתמש בפעולת JsonConvert.DeserializeObject הבאה:

var salesJson = File.ReadAllText($"stores{Path.DirectorySeparatorChar}201{Path.DirectorySeparatorChar}sales.json");
var salesData = JsonConvert.DeserializeObject<SalesTotal>(salesJson);

Console.WriteLine(salesData.Total);

class SalesTotal
{
  public double Total { get; set; }
}

תשר

קבצים מגיעים במגוון תבניות. קבצי JSON רצויים ביותר לעבודה בשל התמיכה המוכללת בשפה. ייתכן שתיתקל גם בקבצים .csv, ברוחב קבוע או בתבנית אחרת. במקרה זה, מומלץ לחפש מנתח nuget.org עבור סוג קובץ זה.

כתיבת נתונים לקבצים

למדת כיצד לכתוב קבצים בתרגיל הקודם; זה רק שכתבת אחד ריק. כדי לכתוב נתונים לקובץ, WriteAllText באותה שיטת עבודה, אך להעביר את הנתונים שברצונך לכתוב.

var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);

File.WriteAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", data.Total.ToString());

// totals.txt
// 22385.32

צירוף נתונים לקבצים

בדוגמה הקודמת, הקובץ מוחלפת בכל פעם שאתה כותב בו. לפעמים, אתה לא רוצה את זה. ברצונך להוסיף נתונים לקובץ במקום להחליף אותם לחלוטין. באפשרותך להוסיף נתונים לפעולת השירות File.AppendAllText הבאה. כברירת מחדל, File.AppendAllText יוצר את הקובץ אם הוא אינו קיים כבר.

var data = JsonConvert.DeserializeObject<SalesTotal>(salesJson);

File.AppendAllText($"salesTotalDir{Path.DirectorySeparatorChar}totals.txt", $"{data.Total}{Environment.NewLine}");

// totals.txt
// 22385.32
// 22385.32

תשר

בדוגמה של הקוד הקודם, Environment.NewLine.NET כדי להציב את הערך בשורה משלו. אם לא עברת את הערך הזה, היית מסולסל את כל המספרים באותה שורה.

בתרגיל הבא, תסיים את הפרוייקט הכולל של מכירות עבור Tailwind Traders על-ידי קריאת כל קבצי המכירות וכתיבה של הסכום הכולל לקובץ .txt חדש. לאחר מכן, מערכת המסחר של החברה תוכל לעבד את הקובץ.