Ermitteln der Verfügbarkeit von Microsoft OneDrive-Dateien

Wichtige APIs

Ermitteln Sie mithilfe der StorageFile.IsAvailable-Eigenschaft, ob eine Microsoft OneDrive-Datei verfügbar ist.

Voraussetzungen

Verwenden der StorageFile.IsAvailable-Eigenschaft

Benutzer können OneDrive-Dateien als „Offline verfügbar“ (Standardeinstellung) oder „Nur online verfügbar“ kennzeichnen. Diese Funktion bietet Benutzern die Möglichkeit, große Dateien (z. B. Bilder und Videos) in ihren OneDrive-Speicher zu verschieben, als nur online verfügbar zu kennzeichnen und so Speicherplatz auf der Festplatte zu sparen (lokal wird nur eine Datei mit Metadaten gespeichert).

Mithilfe von StorageFile.IsAvailable wird ermittelt, ob eine Datei zurzeit verfügbar ist. Die folgende Tabelle zeigt den Wert der StorageFile.IsAvailable-Eigenschaft in verschiedenen Szenarien.

Dateityp Online Getaktetes Netzwerk Offline
Lokale Datei True True True
Als "Offline verfügbar" gekennzeichnete OneDrive-Datei True True True
Als "Nur online verfügbar" gekennzeichnete OneDrive-Datei Richtig Basierend auf Benutzereinstellungen Falsch
Netzwerkdatei Richtig Basierend auf Benutzereinstellungen Falsch

 

Die folgenden Schritte zeigen, wie festgestellt wird, ob eine Datei momentan verfügbar ist.

  1. Deklarieren Sie eine für die Bibliothek, auf die Sie zugreifen möchten, geeignete Funktion.
  2. Schließen Sie den Windows.Storage-Namespace ein. Dieser Namespace enthält die Typen zum Verwalten von Dateien, Ordnern und Anwendungseinstellungen. Außerdem enthält er den erforderlichen StorageFile-Typ.
  3. Beschaffen Sie ein StorageFile-Objekt für die gewünschte Datei bzw. die gewünschten Dateien. Wenn Sie eine Bibliothek aufzählen, können Sie zur Durchführung dieses Schritts die StorageFolder.CreateFileQuery-Methode und dann die GetFilesAsync-Methode des sich ergebenden StorageFileQueryResult-Objekts aufrufen. Die GetFilesAsync-Methode gibt eine IReadOnlyList-Sammlung mit StorageFile-Objekten zurück.
  4. Nachdem Sie den Zugriff auf ein StorageFile-Objekt eingerichtet haben, das die gewünschten Dateien darstellt, spiegelt der Wert der StorageFile.IsAvailable-Eigenschaft wider, ob die Datei verfügbar ist.

Die folgende generische Methode veranschaulicht, wie Sie einen beliebigen Ordner aufzählen und die Sammlung mit StorageFile-Objekten für diesen Ordner zurückgeben. Die aufrufende Methode durchläuft dann die zurückgegebene Sammlung und verweist für jede Datei auf die StorageFile.IsAvailable-Eigenschaft.

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