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
Kenntnisse in der asynchronen Programmierung für Apps für die universelle Windows-Plattform (UWP)
Informationen zum Schreiben von asynchronen Apps in C# oder Visual Basic finden Sie unter Aufrufen asynchroner APIs in C# oder Visual Basic. Informationen zum Schreiben von asynchronen Apps in C++ finden Sie unter Asynchrone Programmierung in C++.
Deklarationen von App-Funktionen
Weitere Informationen finden Sie unter Berechtigungen für den Dateizugriff.
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.
- Deklarieren Sie eine für die Bibliothek, auf die Sie zugreifen möchten, geeignete Funktion.
- 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.
- 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.
- 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");
}
}