Lire et écrire dans des fichiers

Effectué

La lecture et l’écriture de données dans des fichiers sont des concepts clés de .NET.

Tailwind Traders doit écrire le total de tous les fichiers de ventes de chacun de ses magasins dans un nouveau fichier, puis charger ce fichier dans le système de vente de l’entreprise.

Ici, vous apprenez à utiliser la classe File pour lire et écrire dans des fichiers.

Lire les données dans des fichiers

Les fichiers sont lus en utilisant la méthode ReadAllText de la classe File.

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

L’objet retourné par la méthode ReadAllText est une chaîne.

{
  "total": 22385.32
}

Analyser les données dans des fichiers

Ces données dans leur format de chaîne n’ont rien d’extraordinaire. Ce sont juste des caractères, qui sont maintenant présentés dans un format lisible. Vous souhaitez pouvoir analyser ces données dans un format utilisable programmatiquement.

Il existe de nombreuses façons d’analyser des fichiers JSON avec .NET, notamment une bibliothèque communautaire connue sous le nom de Json.NET.

Vous pouvez ajouter le package Json.NET à votre projet à l’aide de NuGet :

dotnet add package Newtonsoft.Json

Ensuite, ajoutez using Newtonsoft.Json en haut de votre fichier de classe :

using Newtonsoft.Json; 

Et ajoutez la méthode 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; }
}

Conseil

Les fichiers se présentent dans des formats divers. Les fichiers JSON sont les plus intéressants à utiliser en raison de leur prise en charge intégrée dans le langage. Vous pouvez aussi rencontrer des fichiers au format .csv, de largeur fixe ou dans un autre format. Dans ce cas, il est préférable de rechercher un analyseur pour ce type de fichier dans nuget.org.

Écrire des données dans des fichiers

Vous avez appris à écrire des fichiers dans l’exercice précédent. En fait, vous en avez juste écrit un vide. Pour écrire des données dans un fichier, utilisez la même méthode WriteAllText, mais transmettez les données que vous voulez écrire.

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

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

// totals.txt
// 22385.32

Ajouter des données dans des fichiers

Dans l’exemple précédent, le fichier est remplacé chaque fois que vous écrivez dedans. Ce que, parfois, vous ne voulez pas. Vous pouvez préférer ajouter des données au fichier au lieu de le remplacer entièrement. Vous pouvez ajouter des données avec la méthode File.AppendAllText. Par défaut, File.AppendAllText crée le fichier s’il n’existe pas déjà.

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

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

// totals.txt
// 22385.32
// 22385.32

Conseil

Dans l’exemple de code précédent, Environment.NewLine invite .NET à placer la valeur sur sa propre ligne. Si vous n’aviez pas transmis cette valeur, vous verriez tous les chiffres serrés sur la même ligne.

Dans l’exercice suivant, vous allez terminer le projet des totaux de ventes pour Tailwind Traders en lisant tous les fichiers de ventes et en écrivant le total général dans un fichier .txt. Ce fichier pourra ensuite être traité par le système commercial de l’entreprise.