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