Compartilhar via


Auxiliares do sistema de arquivos

Procurar amostra. Procurar no exemplo

Este artigo descreve como você pode usar a interface do usuário do aplicativo .NET multiplataforma (.NET MAUI) IFileSystem. A interface também 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 IFileSystem está disponível por meio da propriedade FileSystem.Current. A interface IFileSystem e a classe FileSystem estão contidas no namespace Microsoft.Maui.Storage.

Uso de auxiliares do sistema de arquivos

Cada sistema operacional terá caminhos exclusivos para o cache do aplicativo e diretórios de dados do aplicativo. A interface IFileSystem fornece uma API multiplataforma 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 todos os dados que precisem 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 de aplicativo

Para obter o diretório de nível superior do aplicativo para 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 agrupados

Para abrir um arquivo que está agrupado no pacote do aplicativo, use o método OpenAppPackageFileAsync e passe o nome do arquivo. Esse método retorna um Stream somente 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();
}

O exemplo a seguir demonstra como abrir um arquivo de fonte agrupado do pacote do aplicativo:

await using var myFont = await FileSystem.OpenAppPackageFileAsync("MyFont.ttf");

Copiar um arquivo agrupado para a pasta de dados de aplicativo

Você não pode modificar o arquivo agrupado de um aplicativo. Mas você pode copiar um arquivo agrupado para o diretório de cache ou diretório de dados de aplicativo. O exemplo a seguir usa OpenAppPackageFileAsync para copiar um arquivo agrupado 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 de cada plataforma com os auxiliares do sistema de arquivos.

  • FileSystem.CacheDirectory
    Retorna o CacheDir do contexto atual.

  • FileSystem.AppDataDirectory
    Retorna o FilesDir do contexto atual, que é feito com backup usando o Backup automático começando na API 23 e superior.

  • FileSystem.OpenAppPackageFileAsync
    Os arquivos que foram adicionados ao projeto com o Criar ação do MauiAsset podem ser abertos com esse método. Os projetos .NET MAUI processarão todo arquivo na pasta Recursos\Bruto como um MauiAsset.

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