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
Comprender la programación asincrónica de las aplicaciones para Plataforma universal de Windows (UWP)
Puedes aprender a escribir aplicaciones asincrónicas en C# o Visual Basic. Consulta Llamar a API asincrónicas en C# o Visual Basic. Para aprender a escribir aplicaciones asincrónicas en C++, consulta Programación asincrónica en C++.
Declaraciones de funcionalidades de las aplicaciones
Consulta Permisos de acceso de archivos.
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.
- Declara una funcionalidad adecuada para la biblioteca a la que deseas obtener acceso.
- 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.
- 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.
- 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");
}
}