Určení dostupnosti souborů Microsoft OneDrive

důležitá rozhraní API

Pomocí vlastnosti StorageFile.IsAvailable zjistěte, jestli je k dispozici soubor Microsoft OneDrive.

Předpoklady

Použití vlastnosti StorageFile.IsAvailable

Uživatelé můžou soubory OneDrivu označit jako dostupné offline (výchozí) nebo jenom online. Tato funkce umožňuje uživatelům přesouvat velké soubory (například obrázky a videa) na OneDrive, označit je jako jenom online a ušetřit místo na disku (jediná věc, která se uchovává místně, je soubor metadat).

StorageFile.IsAvailable slouží k určení, jestli je soubor aktuálně dostupný. Následující tabulka uvádí hodnotu vlastnosti StorageFile.IsAvailable v různých scénářích.

Typ souboru Online Účtovaná síť Režim offline
Místní soubor Pravdivé Pravdivé Pravdivé
Soubor OneDrivu označený jako dostupný–offline Pravdivé Pravdivé Pravdivé
Soubor na OneDrive označený jako pouze online Pravdivé Na základě uživatelských nastavení Nepravda
Síťový soubor Pravdivé Na základě uživatelských nastavení Nepravda

 

Následující kroky ukazují, jak určit, jestli je soubor aktuálně dostupný.

  1. Deklarujte schopnost odpovídající knihovně, ke které chcete získat přístup.
  2. Zahrňte obor názvů Windows.Storage . Tento obor názvů zahrnuje typy pro správu souborů, složek a nastavení aplikace. Zahrnuje také potřebný typ StorageFile .
  3. Získejte objekt StorageFile pro požadované soubory. Pokud provádíte výčet knihovny, tento krok se obvykle provádí zavoláním metody StorageFolder.CreateFileQuery a poté zavoláním metody GetFilesAsync na výsledném objektu StorageFileQueryResult. Metoda GetFilesAsync vrátí IReadOnlyList kolekce StorageFile objektů.
  4. Jakmile máte přístup k objektu StorageFile představující požadované soubory, hodnota StorageFile.IsAvailable vlastnost odráží, zda je soubor k dispozici nebo ne.

Následující obecná metoda ukazuje, jak vytvořit výčet jakékoli složky a vrátit kolekci objektů StorageFile pro tuto složku. Volající metoda pak iteruje přes vrácenou kolekci odkazující na StorageFile.IsAvailable vlastnost pro každý soubor.

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