Determinazione della disponibilità dei file di Microsoft OneDrive

API importanti

Determinare se un file di Microsoft OneDrive è disponibile usando la proprietà StorageFile.IsAvailable.

Prerequisiti

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.

  1. Dichiarare una funzionalità appropriata per la libreria a cui si vuole accedere.
  2. 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.
  3. 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.
  4. 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");
    }
}