빠른 시작: 로밍 앱 데이터(HTML)

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

로밍 앱 데이터 저장소에서 설정 및 파일을 저장하고 검색하는 방법에 대해 알아봅니다. 로밍 앱 데이터 저장소에 대한 정보 및 사용하려는 이유에 대해서는 로밍 앱 데이터를 참조하세요.

로밍 데이터가 변경되면 알림을 받도록 등록

이 예제에서는 datachangeHandler를 로밍 데이터 변경에 대한 처리기로 설정합니다.


var applicationData = Windows.Storage.ApplicationData.current;
 
function initialize() 
{
    applicationData.addEventListener("datachanged", datachangeHandler);
}

function dataChangeHandler(eventArgs)
{
    // TODO: Refresh your data
}

앱 설정 및 파일 컨테이너 가져오기

설정을 가져오려면 ApplicationData.roamingSettings 속성을 사용하고 파일을 가져오려면 ApplicationData.roamingFolder 속성을 사용합니다.

var roamingSettings = applicationData.roamingSettings;
var roamingFolder = applicationData.roamingFolder;

다음 단계에서는 이 단계의 roamingSettingsroamingFolder 변수를 사용합니다.

설정에 데이터 쓰기

앞 단계에서 가져온 roamingSettings 컨테이너의 설정에 액세스하려면 ApplicationDataContainer.values 속성을 사용합니다. 이 예제에서는 exampleSetting이라는 설정과 앱 상태와 같은 시간이 중요한 정보를 전환하기에 적합한 HighPriority라는 설정을 만듭니다.

// Simple setting

roamingSettings.values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app

roamingSettings.values["HighPriority"] = "65";

ApplicationDataCompositeValue 개체에는 자동으로 액세스되어야 하는 설정이 포함됩니다. 이 예제에서는 exampleCompositeSetting이라는 복합 설정을 만들어 roamingSettings 컨테이너에 추가합니다.

// Composite setting

var composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

roamingSettings.values["exampleCompositeSetting"] = composite;

설정 컨테이너를 만들려면 ApplicationDataContainer.CreateContainer 메서드를 호출합니다. 이 예제에서는 exampleContainer라는 설정 컨테이너를 만들고 exampleSetting이라는 설정을 추가합니다. ApplicationDataCreateDisposition 열거형의 Always 값은 컨테이너가 아직 없는 경우 컨테이너를 만들어야 함을 나타냅니다.

로밍 앱 데이터 저장소에서 설정을 변경하면 운영 체제에서 datachanged 이벤트를 보냅니다.

// Setting in a container

var container = roamingSettings.createContainer("exampleContainer", 
                                                Windows.Storage.ApplicationDataCreateDisposition.Always);

if (roamingSettings.containers.hasKey("exampleContainer"))
{
    roamingSettings.containers.lookup("exampleContainer").values["exampleSetting"] = "Hello World";
}

설정에서 데이터 읽기

roamingSettings 컨테이너의 exampleSetting 설정에 액세스하려면 ApplicationDataContainer.values 속성을 사용합니다.

// Simple setting

var value = roamingSettings.values["exampleSetting"];
        
if (!value)
{
    // No data
}
else
{
    // Access data in value
}

roamingSettings 컨테이너의 exampleCompositeSetting 설정에 액세스하려면 ApplicationDataContainer.values 속성을 사용합니다.

// Composite setting

var composite = roamingSettings.values["exampleCompositeSetting"];

if (!composite)
{
    // No data
}
else
{
    // Access data in composite["intVal"] and composite["strVal"]
}

exampleContainer 컨테이너의 exampleSetting 설정에 액세스하려면 ApplicationDataContainer.values 속성을 사용합니다.

// Setting in a container

var hasContainer = roamingSettings.containers.hasKey("exampleContainer");

if (hasContainer)
{
    // Access data in roamingSettings.containers.lookup("exampleContainer").values.hasKey("exampleSetting");
}

파일에 데이터 쓰기

Windows.Storage.StorageFolder.createFileAsyncWindows.Storage.FileIO.writeTextAsync 같은 파일 API를 사용하여 로밍 앱 데이터 저장소에서 파일을 만들고 업데이트합니다. 이 예제에서는 dataFile.txt라는 파일을 roamingFolder 컨테이너에 만들고 현재 날짜와 시간을 이 파일에 기록합니다. CreationCollisionOption 열거형의 replaceExisting 값은 파일이 이미 있는 경우 파일을 바꾸어야 함을 나타냅니다.

function writeTimestamp() {
   roamingFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting)
      .then(function (sampleFile) {
         var formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
         var timestamp = formatter.format(new Date());

         return Windows.Storage.FileIO.writeTextAsync(sampleFile, timestamp);
      }).done(function () {      
      });
}

파일에서 데이터 읽기

Windows.Storage.StorageFolder.getFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.readTextAsync 같은 파일 API를 사용하여 로밍 앱 데이터 저장소에서 파일을 열고 읽습니다. 이 예제에서는 앞 단계에서 만든 dataFile.txt 파일을 열고 파일에서 날짜를 읽습니다. CreationCollisionOption 열거형의 openIfExists 값은 파일이 반드시 있어야 함을 나타냅니다. 다양한 위치에서 파일 리소스 로드에 대한 자세한 내용은 파일 리소스를 로드하는 방법을 참조하세요.

function readTimestamp() {
   roamingFolder.getFileAsync("dataFile.txt")
      .then(function (sampleFile) {
         return Windows.Storage.FileIO.readTextAsync(sampleFile);
      }).done(function (timestamp) {
         // Data is contained in timestamp
      }, function () {
         // Timestamp not found
      });
}

설정 사용을 마치면 설정 삭제

exampleSetting 설정을 사용하는 작업을 마쳤으면 ApplicationDataContainerSettings.remove 메서드를 호출하여 roamingSettings 컨테이너에서 이 설정을 삭제합니다.

// Simple setting

roamingSettings.values.remove("exampleSetting");

exampleCompositeSetting 복합 설정을 사용하는 작업을 마쳤으면 ApplicationDataCompositeValue.remove 메서드를 호출하여 roamingSettings 컨테이너에서 이 설정을 삭제합니다.

// Delete composite setting

roamingSettings.values.remove("exampleCompositeSetting");

exampleContainer 설정 컨테이너를 사용하는 작업을 마쳤으면 ApplicationDataContainer.deleteContainer 메서드를 호출하여 이 설정 컨테이너를 삭제합니다.

// Delete container

roamingSettings.deleteContainer("exampleContainer");

설명

각 앱에는 로밍 앱 데이터를 위한 할당량이 있습니다. 허용되는 총 로밍 중인 데이터 크기를 알아보려면 ApplicationData.roamingStorageQuota 속성을 확인합니다. 로밍 데이터가 할당량을 초과하면 그 크기가 할당량보다 작아질 때까지 다시 로밍하지 않습니다.

관련 항목

작업

파일 리소스를 로드하는 방법

빠른 시작: 로컬 앱 데이터

빠른 시작: 임시 앱 데이터

개념

Windows 런타임을 사용하여 앱 데이터 액세스

지침

로밍 앱 데이터에 대한 지침

참조

Windows.Storage.ApplicationData

Windows.Storage.ApplicationDataCompositeValue

Windows.Storage.ApplicationDataContainer

Windows.Storage.ApplicationDataContainerSettings

샘플

응용 프로그램 데이터 샘플