Share via


Determinación de la disponibilidad de los archivos de Microsoft OneDrive

API importantes

Determina si un archivo de Microsoft OneDrive está disponible mediante la propiedad StorageFile.IsAvailable.

Requisitos previos

Usar la propiedad StorageFile.IsAvailable

Los usuarios pueden marcar los archivos de OneDrive como disponibles sin conexión (valor predeterminado) o disponibles solo en línea. Esta función les permite mover archivos grandes (como imágenes y vídeos) a OneDrive, marcarlos como disponibles solo en línea y ahorrar espacio en disco (lo único que se guarda de manera local es un archivo de metadatos).

StorageFile.IsAvailable se usa para determinar si un archivo está disponible actualmente. En la siguiente tabla se muestra el valor de la propiedad StorageFile.IsAvailable en diversos escenarios.

Tipo de archivo En línea Red de uso medido Sin conexión
Archivo local True True True
Archivo de OneDrive marcado como disponible sin conexión True True True
Archivo de OneDrive marcado como disponible solo en línea Verdadero Según la configuración del usuario Falso
Archivo de red Verdadero Según la configuración del usuario Falso

 

Los pasos siguientes ilustran cómo determinar si un archivo está disponible actualmente.

  1. Declara una funcionalidad adecuada para la biblioteca a la que deseas obtener acceso.
  2. Incluye el espacio de nombres Windows.Storage. Este espacio de nombres incluye los tipos para administrar archivos, carpetas y opciones de configuración de la aplicación. También incluye el tipo StorageFile necesario.
  3. Adquiere un objeto StorageFile para los archivos deseados. Si deseas enumerar una biblioteca, este paso suele completarse mediante una llamada al método StorageFolder.CreateFileQuery, seguida de una llamada al método GetFilesAsync del objeto StorageFileQueryResult resultante. El método GetFilesAsync devuelve una colección IReadOnlyList de objetos StorageFile.
  4. Cuando ya tengas acceso a un objeto StorageFile que represente los archivos deseados, el valor de la propiedad StorageFile.IsAvailable reflejará si el archivo está disponible o no.

El siguiente método genérico muestra cómo enumerar cualquier carpeta y devolver la colección de objetos StorageFile para dicha carpeta. El método que llama itera en la colección devuelta haciendo referencia a la propiedad StorageFile.IsAvailable en cada archivo.

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