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