Compartilhar via


Determinando a disponibilidade de arquivos do Microsoft OneDrive

APIs importantes

Determine se um arquivo do Microsoft OneDrive está disponível usando a propriedade StorageFile.IsAvailable.

Pré-requisitos

Usando a propriedade StorageFile.IsAvailable

Os usuários podem marcar os arquivos OneDrive como disponível offline (padrão) ou somente online. Com essa funcionalidade, os usuários podem transferir arquivos grandes (como fotos e vídeos) para o OneDrive, marcá-los como somente online e economizar espaço em disco (a única coisa mantida localmente é um arquivo de metadados).

StorageFile.IsAvailable é usada para determinar se um arquivo está disponível no momento. A tabela a seguir mostra o valor da propriedade StorageFile.IsAvailable em diversos cenários.

Tipo de arquivo Online Rede limitada Offline
Arquivo local True True True
Arquivo OneDrive marcado como disponível offline True True True
Arquivo OneDrive marcado como somente online Verdadeiro Baseado nas configurações do usuário Falso
Arquivo de rede Verdadeiro Baseado nas configurações do usuário Falso

 

As etapas a seguir ilustram como determinar se um arquivo está disponível no momento.

  1. Declare uma funcionalidade apropriada para a biblioteca que você quer acessar.
  2. Inclua o namespace Windows.Storage. Esse namespace inclui os tipos para gerenciamento de arquivos, pastas e configurações de aplicativos. Inclui também o tipo StorageFile necessário.
  3. Obtenha um objeto StorageFile para o(s) arquivo(s) desejado(s). Se estiver enumerando uma biblioteca, essa etapa será normalmente realizada pela chamada ao método StorageFolder.CreateFileQuery e, depois, chamando o método StorageFileQueryResult do objeto resultante GetFilesAsync. O método GetFilesAsync retorna uma coleção IReadOnlyList de objetos StorageFile.
  4. Quando você tiver acesso a um objeto StorageFile representando os arquivos desejados, o valor da propriedade StorageFile.IsAvailable refletirá se o arquivo está ou não disponível.

O método genérico a seguir ilustra como enumerar qualquer pasta e retorna a coleção de objetos StorageFile dessa pasta. O método chamado faz a iteração sobre a coleção retornada, referenciando a propriedade StorageFile.IsAvailable de cada arquivo.

/// <summary>
/// Generic function that retrieves all files from the specified folder.
/// </summary>
/// <param name="folder">The folder to be searched.</param>
/// <returns>An IReadOnlyList collection containing the file objects.</returns>
async Task<System.Collections.Generic.IReadOnlyList<StorageFile>> GetLibraryFilesAsync(StorageFolder folder)
{
    var query = folder.CreateFileQuery();
    return await query.GetFilesAsync();
}

private async void CheckAvailabilityOfFilesInPicturesLibrary()
{
    // Determine availability of all files within Pictures library.
    var files = await GetLibraryFilesAsync(KnownFolders.PicturesLibrary);
    for (int i = 0; i < files.Count; i++)
    {
        StorageFile file = files[i];

        StringBuilder fileInfo = new StringBuilder();
        fileInfo.AppendFormat("{0} (on {1}) is {2}",
                    file.Name,
                    file.Provider.DisplayName,
                    file.IsAvailable ? "available" : "not available");
    }
}