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