Odczytywanie z plików i zapisywanie do plików

Ukończone

Odczytywanie danych z plików i zapisywanie danych do plików to podstawowe koncepcje platformy .NET.

Firma Tailwind Traders musi zapisać sumę wszystkich plików sprzedaży poszczególnych sklepów w nowym pliku, a następnie załadować plik do systemu sprzedaży firmy.

Tutaj dowiesz się, jak używać klasy do odczytywania i zapisywania File w plikach.

Odczytywanie danych z plików

Pliki są odczytywane przy użyciu metody ReadAllText klasy File.

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

Obiekt zwracany z metody ReadAllText jest ciągiem.

{
  "total": 22385.32
}

Analizowanie danych w plikach

Te dane w formacie ciągu nie bardzo Ci się przydadzą. To nadal tylko znaki, ale teraz w formacie, który możesz przeczytać. Potrzebujesz możliwości przeanalizowania tych danych do formatu, którego można użyć programowo.

Istnieje wiele sposobów analizowania plików JSON za pomocą platformy .NET, na przykład biblioteka społeczności o nazwie Json.NET.

Pakiet Json.NET można dodać do projektu przy użyciu narzędzia NuGet:

dotnet add package Newtonsoft.Json

Następnie dodaj using Newtonsoft.Json do góry pliku klasy:

using Newtonsoft.Json; 

I użyj JsonConvert.DeserializeObject metody :

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

Napiwek

Pliki mają różnorodne formaty. Plik JSON jest najbardziej pożądany ze względu na wbudowaną obsługę w języku. Możesz również napotkać pliki w formacie CSV, pliki o stałej szerokości lub w innym formacie. W takim przypadku najlepiej poszukać w witrynie nuget.org analizatora dla tego typu pliku.

Zapisywanie danych do plików

Wiesz już, jak zapisywać pliki w poprzednim ćwiczeniu; to tylko, że napisałeś pusty. Aby zapisać dane do pliku, użyj tej samej metody WriteAllText, ale przekaż dane, które chcesz zapisać.

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

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

// totals.txt
// 22385.32

Dołączanie danych do plików

W poprzednim przykładzie plik jest zastępowany za każdym razem, gdy zapisujesz do niego dane. Czasami tego nie chcesz. Chcesz dołączyć dane do pliku zamiast całkowicie go zastąpić. Dane można dołączać za pomocą metody File.AppendAllText. Domyślnie program tworzy plik, File.AppendAllText jeśli jeszcze nie istnieje.

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

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

// totals.txt
// 22385.32
// 22385.32

Napiwek

W poprzednim przykładzie kodu monituje platformę .NET o Environment.NewLine umieszczenie wartości we własnym wierszu. Jeśli nie przekażesz tej wartości, wszystkie liczby będą znajdować się razem w jednym wierszu.

W następnym ćwiczeniu ukończysz projekt łącznej sumy sprzedaży dla firmy Tailwind Traders, odczytując wszystkie pliki sprzedaży i zapisując sumę całkowitą do pliku txt. System handlowy firmy może następnie przetworzyć plik.