Определение доступности файлов Microsoft OneDrive
Важные API
Определите, доступен ли файл Microsoft OneDrive с помощью свойства StorageFile.IsAvailable.
Необходимые компоненты
Общее представление об асинхронном программировании для приложений универсальной платформы Windows (UWP).
Вы можете узнать, как писать асинхронные приложения в C# или Visual Basic, см . статью "Вызов асинхронных API" в C# или Visual Basic. Сведения о написании асинхронных приложений в C++см. в статье "Асинхронное программирование" в C++.
Объявления возможностей приложения
Использование свойства StorageFile.IsAvailable
Пользователи могут пометить файлы OneDrive как доступные в автономном режиме (по умолчанию) или только в Сети. Эта возможность позволяет пользователям перемещать большие файлы (например, изображения и видео) в OneDrive, помечать их как доступные только в Сети, а также сохранять место на диске (единственное, что хранится локально — это файл метаданных).
StorageFile.IsAvailable позволяет определить, доступен ли файл в настоящий момент. В следующей таблице показано значение свойства StorageFile.IsAvailable в различных сценариях.
Тип файла | Миграция по сети | Лимитная сеть | Offline |
---|---|---|---|
Локальный файл | Истина | True | Истина |
Файл OneDrive, помеченный как доступный в автономном режиме | Истина | True | Истина |
Файл OneDrive, помеченный как доступный только в Интернете | Истина | На основе параметров пользователя | False |
Сетевой файл | Истина | На основе параметров пользователя | False |
Ниже показано, как определить, доступен ли файл в данный момент.
- Объявите возможность, соответствующую библиотеке, к которой вы хотите получить доступ.
- Включите пространство имен Windows.Storage. Это пространство имен включает типы для управления файлами, папками и параметрами приложения. Он также включает необходимый тип StorageFile .
- Получение объекта StorageFile для нужных файлов. При перечислении библиотеки этот шаг обычно выполняется путем вызова метода StorageFolder.CreateFileQuery, а затем вызова результирующего метода GetFilesAsync объекта StorageFileQueryResult. Метод GetFilesAsync возвращает коллекцию объектов StorageFile.
- Получив доступ к объекту StorageFile, представляющем нужные файлы, значение свойства StorageFile.IsAvailable отражает, доступен ли файл.
В следующем универсальном методе показано, как перечислить любую папку и вернуть коллекцию объектов StorageFile для этой папки. Затем вызывающий метод выполняет итерацию по возвращаемой коллекции, ссылающейся на свойство StorageFile.IsAvailable для каждого файла.
/// <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");
}
}