Microsoft OneDrive 파일의 가용성 확인
중요 API
StorageFile.IsAvailable 속성을 사용하여 Microsoft OneDrive 파일을 사용할 수 있는지 확인합니다.
전제 조건
UWP(유니버설 Windows 플랫폼) 앱에 대한 비동기 프로그래밍 이해
C# 또는 Visual Basic에서 비동기 앱을 작성하는 방법에 대한 자세한 내용은 C# 또는 Visual Basic에서 비동기식 API 호출을 참조하세요. C++에서 비동기 앱을 작성하는 방법은 C++의 비동기 프로그래밍을 참조하세요.
앱 기능 선언
파일 액세스 권한을 참조하세요.
StorageFile.IsAvailable 속성 사용
사용자는 OneDrive 파일을 오프라인 사용 가능(기본값) 또는 온라인 전용으로 표시할 수 있습니다. 이 기능을 통해 사용자는 대용량 파일(예: 사진 및 동영상)을 OneDrive로 이동하고, 온라인 전용으로 표시하고, 디스크 공간을 절약할 수 있습니다(메타데이터 파일만 로컬에 보관됨).
StorageFile.IsAvailable은 파일을 현재 사용할 수 있는지 확인하는 데 사용됩니다. 다음 표는 다양한 시나리오에서의 StorageFile.IsAvailable 속성 값을 보여 줍니다.
파일 형식 | 온라인 | 요금제 네트워크 | 오프라인 |
---|---|---|---|
로컬 파일 | True | True | True |
오프라인 사용 가능으로 표시된 OneDrive 파일 | True | True | True |
온라인 전용으로 표시된 OneDrive 파일 | True | 사용자 설정 기반 | False |
네트워크 파일 | True | 사용자 설정 기반 | False |
다음 단계에서는 파일을 현재 사용할 수 있는지 확인하는 방법을 보여 줍니다.
- 액세스하려는 라이브러리에 적합한 기능을 선언합니다.
- Windows.Storage 네임스페이스를 포함합니다. 이 네임스페이스에는 파일, 폴더 및 애플리케이션 설정을 관리하기 위한 형식이 포함됩니다. 또한 필요한 StorageFile 형식도 포함되어 있습니다.
- 원하는 파일에 대한 StorageFile 개체를 획득합니다. 라이브러리를 열거하는 경우 이 단계는 일반적으로 StorageFolder.CreateFileQuery 메서드를 호출한 다음 이어지는 StorageFileQueryResult 개체의 GetFilesAsync 메서드를 호출하여 수행됩니다. GetFilesAsync 메서드는 StorageFile 개체의 IReadOnlyList 컬렉션을 반환합니다.
- 원하는 파일을 나타내는 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");
}
}