Microsoft OneDrive 파일의 가용성 확인

중요 API

StorageFile.IsAvailable 속성을 사용하여 Microsoft OneDrive 파일을 사용할 수 있는지 확인합니다.

전제 조건

StorageFile.IsAvailable 속성 사용

사용자는 OneDrive 파일을 오프라인 사용 가능(기본값) 또는 온라인 전용으로 표시할 수 있습니다. 이 기능을 통해 사용자는 대용량 파일(예: 사진 및 동영상)을 OneDrive로 이동하고, 온라인 전용으로 표시하고, 디스크 공간을 절약할 수 있습니다(메타데이터 파일만 로컬에 보관됨).

StorageFile.IsAvailable은 파일을 현재 사용할 수 있는지 확인하는 데 사용됩니다. 다음 표는 다양한 시나리오에서의 StorageFile.IsAvailable 속성 값을 보여 줍니다.

파일 형식 온라인 요금제 네트워크 오프라인
로컬 파일 True True True
오프라인 사용 가능으로 표시된 OneDrive 파일 True True True
온라인 전용으로 표시된 OneDrive 파일 True 사용자 설정 기반 False
네트워크 파일 True 사용자 설정 기반 False

 

다음 단계에서는 파일을 현재 사용할 수 있는지 확인하는 방법을 보여 줍니다.

  1. 액세스하려는 라이브러리에 적합한 기능을 선언합니다.
  2. Windows.Storage 네임스페이스를 포함합니다. 이 네임스페이스에는 파일, 폴더 및 애플리케이션 설정을 관리하기 위한 형식이 포함됩니다. 또한 필요한 StorageFile 형식도 포함되어 있습니다.
  3. 원하는 파일에 대한 StorageFile 개체를 획득합니다. 라이브러리를 열거하는 경우 이 단계는 일반적으로 StorageFolder.CreateFileQuery 메서드를 호출한 다음 이어지는 StorageFileQueryResult 개체의 GetFilesAsync 메서드를 호출하여 수행됩니다. GetFilesAsync 메서드는 StorageFile 개체의 IReadOnlyList 컬렉션을 반환합니다.
  4. 원하는 파일을 나타내는 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");
    }
}