Compartir a través de


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

Las APIs importantes

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

Prerrequisitos

Uso de la propiedad StorageFile.IsAvailable

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

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

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

 

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

  1. Declare una funcionalidad adecuada para la biblioteca a la que desea acceder.
  2. Incluya el espacio de nombres Windows.Storage. Este espacio de nombres incluye los tipos para administrar archivos, carpetas y configuración de la aplicación. También incluye el tipo StorageFile necesario.
  3. Adquiera un objeto StorageFile para los archivos deseados. Si va a enumerar una biblioteca, este paso se realiza normalmente llamando al método StorageFolder.CreateFileQuery y, a continuación, llamando al método GetFilesAsync del objeto StorageFileQueryResult resultante. El método GetFilesAsync devuelve una colección IReadOnlyList de objetos StorageFile.
  4. Una vez que tenga acceso a un objeto StorageFile que represente los archivos deseados, el valor de la propiedad StorageFile.IsAvailable refleja 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 esa carpeta. A continuación, el método de llamada recorre en iteración la colección devuelta que hace referencia a la propiedad StorageFile.IsAvailable para 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");
    }
}