다음을 통해 공유


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 속성의 값을 보여 줍니다.

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

 

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

  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");
    }
}