Programmes d’assistance du système de fichiers
Dans cet article, vous allez apprendre à utiliser l’interface IFileSystem
de l’application multiplateforme .NET (.NET MAUI). Cette interface fournit des méthodes d’aide qui permettent d’accéder aux répertoires de cache et de données de l’application, ainsi qu’aux fichiers du paquetage de l’application.
L’implémentation par défaut de l’interface IFileSystem
est disponible via la propriété FileSystem.Current
. L’espace de noms Microsoft.Maui.Storage
contient à la fois l’interface IFileSystem
et la classe FileSystem
.
Utilisation des programmes d’assistance du système de fichiers
Chaque système d’exploitation aura des chemins uniques vers le cache de l’application et les répertoires de données d’application. L’interface IFileSystem
fournit une API multiplateforme pour accéder à ces chemins d’accès d’annuaire.
Répertoire du cache
Permet au répertoire de l’application de stocker les données du cache. Les données de cache peuvent être utilisées pour toutes les données qui doivent persister plus longtemps que les données temporaires, mais ne doivent pas être des données nécessaires au fonctionnement de l’application, car le système d’exploitation peut effacer ce stockage.
string cacheDir = FileSystem.Current.CacheDirectory;
Répertoire des données de l’application
Pour obtenir le répertoire de niveau supérieur de l’application pour tous les fichiers qui ne sont pas des fichiers de données utilisateur. Ces fichiers sont sauvegardés avec le framework de synchronisation du système d’exploitation.
string mainDir = FileSystem.Current.AppDataDirectory;
Fichiers groupés
Pour ouvrir un fichier groupé dans le package d’application, utilisez la méthode OpenAppPackageFileAsync
et transmettez le nom de fichier. Cette méthode renvoie une Stream en lecture seule représentant le contenu du fichier. L’exemple suivant illustre l’utilisation d’une méthode pour lire le contenu texte d’un fichier :
public async Task<string> ReadTextFile(string filePath)
{
using Stream fileStream = await FileSystem.Current.OpenAppPackageFileAsync(filePath);
using StreamReader reader = new StreamReader(fileStream);
return await reader.ReadToEndAsync();
}
L’exemple suivant montre comment ouvrir un fichier de police groupé à partir du package de l’application :
await using var myFont = await FileSystem.OpenAppPackageFileAsync("MyFont.ttf");
Copier un fichier groupé dans le dossier de données de l’application
Vous ne pouvez pas modifier le fichier groupé d’une application. Toutefois, vous pouvez copier un fichier groupé dans le répertoire de cache ou répertoire de données d’application. L’exemple suivant utilise OpenAppPackageFileAsync
pour copier un fichier groupé dans le dossier de données de l’application :
public async Task CopyFileToAppDataDirectory(string filename)
{
// Open the source file
using Stream inputStream = await FileSystem.Current.OpenAppPackageFileAsync(filename);
// Create an output filename
string targetFile = Path.Combine(FileSystem.Current.AppDataDirectory, filename);
// Copy the file to the AppDataDirectory
using FileStream outputStream = File.Create(targetFile);
await inputStream.CopyToAsync(outputStream);
}
Différences selon les plateformes
Cette section décrit les différences entre les plates-formes et les aides au système de fichiers.
FileSystem.CacheDirectory
Retourne le CacheDir du contexte actuel.FileSystem.AppDataDirectory
Retourne le FilesDir du contexte actuel, qui sont sauvegardés à l’aide de sauvegarde automatique à partir de l’API 23 et versions ultérieures.FileSystem.OpenAppPackageFileAsync
Les fichiers qui ont été ajoutés au projet avec l’action de génération de MauiAsset peuvent être ouverts avec cette méthode. Les projets .NET MAUI traitent n’importe quel fichier dans le dossier Resources\Raw en tant que MauiAsset.La méthode
FileSystem.OpenPackageFileAsync
ne peut pas obtenir la longueur du flux sur Android en accédant à la propriétéResult.Length
. Au lieu de cela, vous devez lire l’ensemble du flux et compter le nombre d’octets qu’il y a pour obtenir la taille de la ressource.