Чтение из файлов и запись в них

Завершено

Чтение данных из файлов и запись данных в них — основная концепция в .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-файл, который может быть обработан системой управления продажами.