Auxiliares do sistema de arquivos

Browse sample. Navegue pelo exemplo

Este artigo descreve como você pode usar a interface .NET Multi-platform App UI (.NET MAUI). IFileSystem Essa interface fornece métodos auxiliares que acessam o cache e os diretórios de dados do aplicativo e ajuda a acessar arquivos no pacote do aplicativo.

A implementação padrão da interface está disponível por meio da IFileSystemFileSystem.Current propriedade. A interface e FileSystem a IFileSystem classe estão contidas no Microsoft.Maui.Storage namespace.

Usando auxiliares do sistema de arquivos

Cada sistema operacional terá caminhos exclusivos para o cache do aplicativo e os diretórios de dados do aplicativo. A IFileSystem interface fornece uma API de plataforma cruzada para acessar esses caminhos de diretório.

Diretório de cache

Para fazer com que o diretório do aplicativo armazene dados de cache. Os dados de cache podem ser usados para quaisquer dados que precisam persistir por mais tempo do que os dados temporários, mas não devem ser dados necessários para operar o aplicativo, pois o sistema operacional pode limpar esse armazenamento.

string cacheDir = FileSystem.Current.CacheDirectory;

Diretório de dados do aplicativo

Para obter o diretório de nível superior do aplicativo para todos os arquivos que não são arquivos de dados do usuário. O backup desses arquivos ocorre na estrutura de sincronização do sistema operacional.

string mainDir = FileSystem.Current.AppDataDirectory;

Arquivos empacotados

Para abrir um arquivo empacotado no pacote do aplicativo, use o método e passe o OpenAppPackageFileAsync nome do arquivo. Esse método retorna um somente Stream leitura que representa o conteúdo do arquivo. O exemplo a seguir demonstra o uso de um método para ler o conteúdo de texto de um arquivo:

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

Copiar um arquivo empacotado para a pasta de dados do aplicativo

Não é possível modificar o arquivo empacotado de um aplicativo. Mas você pode copiar um arquivo empacotado para o diretório de cache ou diretório de dados do aplicativo. O exemplo a seguir usa OpenAppPackageFileAsync para copiar um arquivo empacotado para a pasta de dados do aplicativo:

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

Diferenças de plataforma

Esta seção descreve as diferenças específicas da plataforma com os auxiliares do sistema de arquivos.

  • FileSystem.CacheDirectory
    Retorna o CacheDir do contexto atual.

  • FileSystem.AppDataDirectory
    Retorna os FilesDir do contexto atual, dos quais é feito backup usando o Backup Automático iniciado na API 23 e superior.

  • FileSystem.OpenAppPackageFileAsync
    Arquivos que foram adicionados ao projeto com a ação de compilação do MauiAsset podem ser abertos com esse método. Os projetos .NET MAUI processarão qualquer arquivo na pasta Resources\Raw como um MauiAsset.

    O FileSystem.OpenPackageFileAsync método não pode obter o comprimento do fluxo no Android acessando a Result.Length propriedade. Em vez disso, você precisa ler todo o fluxo e contar quantos bytes existem para obter o tamanho do ativo.