앱 로컬 데이터에 대해 풍부한 쿼리를 수행하는 방법

[ 이 문서는 Windows 런타임 앱을 작성하는 Windows에서 8.x 및 Windows Phone 8.x 개발자를 대상으로 합니다. Windows 10용으로 개발하는 경우에는 최신 설명서를 참조하세요.]

앱에서 Windows.Storage 네임스페이스의 파일 API를 사용하여 앱의 저장된 로컬 데이터에 있는 파일에 대해 풍부한 쿼리를 수행할 수 있는 방법에 대해 알아봅니다.

Windows 스토어 앱은 파일 API를 사용하여 사용자 라이브러리에 저장된 콘텐츠에 대해 풍부한 쿼리를 수행할 수 있습니다. 이 기능은 문서, 메일, 미디어 등 리치 콘텐츠를 관리하는 앱에 특히 유용합니다. 미디어에는 사진, 음악, 동영상 등이 포함될 수 있습니다. 이러한 쿼리를 사용하여 파일 내에 저장되어 있는 메타데이터에 대해 전체 텍스트 검색 및 쿼리 기반 필터링과 같은 기능을 추가할 수 있습니다.

알아야 할 사항

기술

사전 요구 사항

지침

단계 1: 앱 데이터에 대해 풍부한 쿼리 사용

파일에 대한 풍부한 쿼리를 제공하려면 Windows Search 서비스를 사용하여 해당 파일을 인덱싱합니다. 일반적으로 앱의 저장된 로컬 데이터에 있는 파일은 인덱싱되지 않습니다. 인덱싱하는 경우 성능이 저하되는데, 앱에서 풍부한 쿼리 기능을 사용하지 않는다면 필요가 없기 때문입니다.

앱 데이터 내의 파일 인덱싱을 사용하려면 앱 데이터 폴더 아래에 indexed라는 폴더를 만들어야 합니다. 그런 다음 인덱싱하려는 콘텐츠를 해당 폴더에 저장합니다. Windows Search 서비스에서 이 indexed 폴더 및 모든 하위 폴더에 파일 콘텐츠 및 메타데이터를 인덱싱합니다.

JJ835814.wedge(ko-kr,WIN.10).gif앱 데이터 내의 파일 인덱싱을 사용하려면

  1. localFolder 아래에 배치될 indexed 폴더를 계획합니다. indexedlocalFolder에 대한 몇 가지 규칙은 다음과 같습니다.

    • indexed 폴더는 localFolder 루트 아래에 만들어야 합니다.

    • Windows Search 서비스에서 이 폴더 깊이 파일 속성 및 콘텐츠를 인덱싱합니다. 즉, Windows Search 서비스에서는 이 폴더 또는 해당 하위 폴더(모든 수준의 하위 폴더 포함)에 로컬로 저장되어 있는 모든 파일을 인덱싱합니다.

      Windows Search 서비스에서는 HTML, PDF, XML 및 RTF 파일 형식, Microsoft Office 파일용 파일 형식 등에 대해 전체 텍스트 인덱싱 및 검색을 지원합니다. Windows Search 서비스용 필터에 대한 자세한 내용은 Windows와 함께 제공되는 필터 처리기를 참조하세요.

    • 앱당 하나의 indexed 폴더만 있을 수 있습니다.

    • 폴더 이름 indexed는 대/소문자를 구분하지 않습니다.

    • 앱 데이터 폴더를 Windows 런타임 API에서는 localFolder라고 하지만 실제 하드 드라이브에서의 이름은 LocalState입니다. 테스트 목적으로 이 폴더에 액세스하려면 다음 폴더 경로를 사용합니다.

      %user%\ AppData\Local\Packages\%packageName%\LocalState
      
    • indexed 폴더 아래의 폴더 구조는 깊을 수 있지만 Windows API에서는 MAX_PATH(260자로 정의됨)보다 긴 파일 또는 폴더의 경로 길이를 허용하지 않습니다. 따라서 indexed 폴더 아래의 파일 또는 폴더가 이 제한을 초과하지 않는지 확인해야 합니다. MAX_PATH에 대한 자세한 내용은 최대 경로 길이 제한을 참조하세요.

    • Windows Search 서비스에서 다른 위치를 인덱싱하는 방법과 마찬가지로 저장된 로컬 데이터만 인덱싱합니다. 즉, indexed 폴더 또는 해당 하위 폴더에 로컬로 저장된 파일만 인덱싱됩니다.

  2. localFolder 아래에 indexed 폴더를 만듭니다. 설치하는 동안 indexed 폴더를 만들 수 없습니다. 앱이 실행되는 경우에만 이 폴더를 만들 수 있습니다. 앱이 처음으로 실행될 때 indexed 폴더를 만드는 방법을 보여 주는 코드 조각은 다음과 같습니다.

    
    Windows.Storage.ApplicationData.current.localFolder.createFolderAsync("indexed", 
        Windows.Storage.CreationCollisionOption.openIfExists).then(
                    function (result) {
                       //your code here
                    });
    
  3. 파일과 폴더를 이 indexed 폴더에 저장합니다. StorageFolder 또는 IStorageFolder를 사용하여 파일과 폴더를 저장할 수 있습니다. 그러면 이 indexed 폴더에 저장한 모든 파일과 폴더를 Windows.Storage 네임스페이스의 파일 API를 사용한 풍부한 쿼리에 사용할 수 있습니다.

단계 2: 인덱싱된 내용 가져오기

Windows Search 서비스가 앱 데이터를 인덱싱하고 나면 앱에서 Windows.Storage 네임스페이스의 파일 API를 통해 데이터를 가져올 수 있습니다. 예를 들어 쿼리를 수행하려면 indexed 폴더 또는 indexed 폴더 아래의 모든 자식 폴더를 나타내는 StorageFolder에서 CreateFileQuery 또는 CreateFolderQuery를 사용합니다.

관련 항목

Windows.Storage

Windows Search 서비스

StorageFolder

IStorageFolder

ApplicationData.localFolder

IFilter