주요 API들
- FileIO 클래스
- StorageFile 클래스
- StorageFile.IsAvailable 속성
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 파일 | 진실 | 사용자 설정 기반 | 거짓 |
네트워크 파일 | 진실 | 사용자 설정 기반 | 거짓 |
다음 단계에서는 파일을 현재 사용할 수 있는지 확인하는 방법을 보여 줍니다.
- 액세스하려는 라이브러리에 적합한 접근 권한 값을 선언합니다.
- 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");
}
}