Determinazione della disponibilità dei file di Microsoft OneDrive
API importanti
Determinare se un file di Microsoft OneDrive è disponibile usando la proprietà StorageFile.IsAvailable.
Prerequisiti
Familiarità con la programmazione asincrona per le app UWP (Universal Windows Platform)
Per informazioni su come scrivere app asincrone in C# o Visual Basic, vedere Chiamare API asincrone in C# o Visual Basic. Per scoprire come scrivere app asincrone in C++, vedere Programmazione asincrona in C++.
Dichiarazioni di funzionalità delle app
Utilizzo della proprietà StorageFile.IsAvailable
Gli utenti possono contrassegnare i file di OneDrive come disponibili offline (impostazione predefinita) o solo online. Questa funzionalità consente agli utenti di spostare file di grandi dimensioni (ad esempio immagini e video) in OneDrive, contrassegnarli come solo online e risparmiare spazio su disco (l'unica cosa mantenuta in locale è un file di metadati).
La proprietà StorageFile.IsAvailable viene usata per determinare se un file è attualmente disponibile. Nella tabella seguente viene illustrato il valore della proprietà StorageFile.IsAvailable in vari scenari.
Tipo di file | Online | Rete a consumo | Offline |
---|---|---|---|
File locale | Vero | Vero | Vero |
File di OneDrive contrassegnato come disponibile offline | Vero | Vero | Vero |
File di OneDrive contrassegnato come solo online | Vero | In base alle impostazioni utente | Falso |
File di rete | Vero | In base alle impostazioni utente | Falso |
La procedura seguente illustra come determinare se un file è attualmente disponibile.
- Dichiarare una funzionalità appropriata per la libreria a cui si vuole accedere.
- Includere lo spazio dei nomi Windows.Storage. Questo spazio dei nomi include i tipi per la gestione di file, cartelle e impostazioni dell'applicazione. Include anche il tipo StorageFile necessario.
- Acquisire un oggetto StorageFile per i file desiderati. Se si enumera una libreria, questo passaggio viene in genere eseguito richiamando il metodo StorageFolder.CreateFileQuery e quindi richiamando il metodo GetFilesAsync dell’oggetto StorageFileQueryResult. Il metodo GetFilesAsync restituisce una raccolta IReadOnlyList degli oggetti StorageFile.
- Dopo aver ottenuto l'accesso a un oggetto StorageFile che rappresenta i file desiderati, il valore della proprietà StorageFile.IsAvailable riflette se il file è disponibile o meno.
Il metodo generico seguente illustra come enumerare qualsiasi cartella e restituire la raccolta di oggetti StorageFile per tale cartella. Il metodo chiamante esegue quindi l'iterazione sulla raccolta restituita che fa riferimento alla proprietà StorageFile.IsAvailable per ogni file.
/// <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");
}
}