Lese- und Schreibvorgänge für Dateien

Abgeschlossen

Das Lesen und Schreiben von Daten in Dateien sind Hauptkonzepte von .NET.

Tailwind Traders möchte die Summe aus allen einzelnen Dateien zu den Umsätzen der einzelnen Filialen in eine neue Datei schreiben und dann die Datei in das Vertriebssystem des Unternehmens laden.

Hier erfahren Sie, wie Sie die File-Klasse verwenden, um Lese- und Schreibvorgänge für Dateien auszuführen.

Lesen von Daten aus Dateien

Dateien werden mithilfe der ReadAllText-Methode der File-Klasse gelesen.

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

Das Rückgabeobjekt aus ReadAllText ist eine Zeichenfolge.

{
  "total": 22385.32
}

Verarbeiten von Daten in Dateien

Diese Daten im Zeichenfolgenformat sind für Sie nicht von Nutzen. Sie bestehen weiterhin nur aus Zeichen, doch immerhin ist das Format lesbar. Sie möchten diese Daten jedoch in ein Format bringen können, das Sie programmgesteuert verwenden können.

Es gibt viele Möglichkeiten, JSON-Dateien mit .NET zu analysieren, einschließlich einer Communitybibliothek, die als Json.NET bezeichnet wird.

Sie können dem Projekt das Json.NET-Paket über NuGet hinzufügen:

dotnet add package Newtonsoft.Json

Dann fügen Sie using Newtonsoft.Json am Anfang Ihrer Klassendatei hinzu:

using Newtonsoft.Json; 

Verwenden Sie die JsonConvert.DeserializeObject-Methode:

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; }
}

Tipp

Dateien können die unterschiedlichsten Formate aufweisen. Eine JSON-Datei wäre das ideale Format, da es von der Programmiersprache unterstützt wird. Möglicherweise haben Sie es jedoch mit Dateien im CSV-Format, Dateien mit fester Breite oder Dateien in einem anderen Format zu tun. In diesem Fall ist es am besten, auf nuget.org nach einem Parser für den jeweiligen Dateityp zu suchen.

Schreiben von Daten in Dateien

Sie haben gelernt, wie Sie Dateien in der vorherigen Übung schreiben; es ist nur, dass Sie eine leere geschrieben haben. Wenn Sie nun Daten in eine Datei schreiben möchten, können Sie dieselbe WriteAllText-Methode verwenden, übergeben jedoch die Daten, die geschrieben werden sollen.

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

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

// totals.txt
// 22385.32

Anfügen von Daten an Dateien

Im vorherigen Beispiel wird die Datei jedes Mal überschrieben, wenn Sie Schreibvorgänge für sie ausführen. Manchmal ist das aber nicht gewünscht, Sie sollten Daten an die Datei anfügen, anstatt sie vollständig zu ersetzen. Sie können Daten mit der File.AppendAllText-Methode anfügen. Standardmäßig wird die Datei von File.AppendAllText erstellt, wenn sie noch nicht vorhanden ist.

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

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

// totals.txt
// 22385.32
// 22385.32

Tipp

Im obigen Codebeispiel fordert Environment.NewLine .NET auf, den Wert in eine eigene Zeile zu schreiben. Wenn Sie diesen Wert nicht übergeben hätten, würden alle Zahlen hintereinander in derselben Zeile angezeigt werden.

In der nächsten Übung schließen Sie das Projekt der Umsatzgesamtzahlen für Tailwind Traders ab, indem Sie alle Dateien mit Umsatzzahlen lesen und das Gesamtergebnis in eine TXT-Datei schreiben. Diese Datei kann dann vom Finanzsystem des Unternehmens verarbeitet werden.