설정과 기타 앱 데이터의 저장 및 검색
앱 데이터는 특정 앱에서 생성되고 관리되는 변경 가능한 데이터입니다. 이 데이터에는 런타임 상태, 앱 설정, 사용자 기본 설정, 참조 콘텐츠(예: 사전 앱의 사전 정의) 및 기타 설정이 포함됩니다. 앱 데이터는 사용자가 앱을 사용할 때 만들고 관리하는 데이터인 사용자 데이터와 다릅니다. 사용자 데이터에는 문서 또는 미디어 파일, 이메일 또는 통신 기록 또는 사용자가 만든 콘텐츠를 보관하는 데이터베이스 레코드가 포함됩니다. 사용자 데이터는 두 개 이상의 앱에서 유용하거나 의미가 있을 수 있습니다. 문서와 같이 앱 자체와 독립적인 관계를 갖춘 엔티티로서 사용자가 조작 또는 전송하려는 데이터인 경우가 많습니다.
앱 데이터에 대한 중요 정보: 앱 데이터의 수명은 앱의 수명에 달려있습니다. 앱이 제거되면, 모든 앱 데이터도 그에 따라 사라집니다. 사용자 데이터 또는 사용자가 중요하고 대체할 수 없는 것으로 인식할 수 있는 것 일체를 저장하는데 앱 데이터를 사용하지 마세요. 사용자의 라이브러리 및 Microsoft OneDrive를 사용하여 이러한 종류의 정보를 저장하는 것이 좋습니다. 앱 데이터는 앱별 사용자 기본 설정, 설정 및 즐겨찾기를 저장하는 데 적합합니다.
앱 데이터의 유형
앱 데이터의 유형은 설정과 파일, 두 가지로 나뉩니다.
설정
설정을 사용하여 사용자 기본 설정 및 애플리케이션 상태 정보를 저장합니다. 앱 데이터 API를 사용하면 설정 만들기와 검색이 용이해집니다(이 문서의 뒷부분에서 몇 가지 예제를 보여 드리겠습니다).
앱 설정을 위해 사용할 수 있는 데이터 형식은 다음과 같습니다.
- UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double
- 부울
- Char16, 문자열
- DateTime, TimeSpan
- C#/.NET의 경우 다음을 사용합니다 . System.DateTimeOffset, System.TimeSpan
- GUID, 점, 크기, 사각형
- ApplicationDataCompositeValue: 원자 단위로 직렬화 및 역직렬화를 해야 하는 관련 앱 설정의 세트입니다. 복합 설정을 사용하여 상호 종속된 설정의 원자성 업데이트를 쉽게 처리할 수 있습니다. 시스템은 동시 액세스 및 로밍 중에 복합 설정의 무결성을 보장합니다. 복합 설정은 적은 양의 데이터에 최적화되어 있으며 큰 데이터 집합에 사용하는 경우 성능이 저하될 수 있습니다.
Files
파일을 사용하여 이진 데이터를 저장하거나 사용자 지정된 직렬화된 형식을 활성화합니다.
앱 데이터 저장소에 앱 데이터 저장
앱이 설치되면 시스템은 설정 및 파일에 대한 자체 사용자별 데이터 저장소를 제공합니다. 시스템이 물리적 스토리지를 관리하여 데이터가 다른 앱 및 다른 사용자로부터 격리되도록 하기 때문에, 이 데이터가 어디에 있으며 또는 어떻게 있는지 알 필요가 없습니다. 또한 이 시스템은 사용자가 앱에 업데이트를 설치하면 데이터 저장소의 콘텐츠를 유지하고, 앱이 제거되면 이러한 데이터 저장소의 콘텐츠를 완전하게 제거합니다.
앱 데이터 저장소 내에서, 각 앱에는 시스템 정의 루트 디렉토리가 있습니다. 하나는 로컬 파일용, 다른 하나는 로밍 파일용, 다른 하나는 임시 파일용입니다. 앱은 이러한 각 루트 디렉토리에 새 파일 및 새 컨테이너를 추가할 수 있습니다.
로컬 앱 데이터
앱 세션 간에 유지되어야 하며 로밍 앱 데이터에 적합하지 않은 모든 정보에 로컬 앱 데이터가 사용돼야 합니다. 다른 디바이스에 적용되지 않는 데이터도 여기에 저장해야 합니다. 저장된 로컬 데이터에 대한 일반적인 크기 제한은 없습니다. 로밍하는 데 의미가 없는 데이터 및 큰 데이터 세트를 저장하는데 로컬 앱 데이터 저장소를 사용합니다.
로컬 앱 데이터 저장소 검색
로컬 앱 데이터를 읽거나 쓰려면 먼저 로컬 앱 데이터 저장소를 검색해야 합니다. 로컬 앱 데이터 저장소를 검색하려면, ApplicationData.LocalSettings속 속성을 사용하여 앱의 로컬 설정을 ApplicationDataContainer 객체로 가져옵니다. 이 ApplicationData.LocalFolder 속성을 사용하여 StorageFolder 객체에 있는 파일을 가져옵니다. 이 ApplicationData.LocalCacheFolder 속성을 사용하여 백업 및 복원에 포함되지 않은 파일을 저장할 수 있는 로컬 앱 데이터 저장소의 폴더를 가져옵니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
간단한 로컬 설정 만들기 및 검색
설정을 만들거나 쓰려면, ApplicationDataContainer.Values 속성을 사용하여 localSettings
이전 단계에서 가져온 컨테이너에 있는 설정에 액세스합니다. 다음 예제에서는 exampleSetting
이라는 설정을 만듭니다.
// Simple setting
localSettings.Values["exampleSetting"] = "Hello Windows";
설정을 검색하려면 설정을 만드는 데 사용한 것과 동일한 ApplicationDataContainer.Values 속성을 사용합니다. 이 예제에서는 방금 만든 설정을 검색하는 방법을 보여줍니다.
// Simple setting
Object value = localSettings.Values["exampleSetting"];
로컬 복합 값 만들기 및 검색
복합 값을 만들거나 쓰려면, ApplicationDataCompositeValue 객체를 만듭니다. 이 예제에서는 exampleCompositeSetting
명명된 복합 설정을 만들어 localSettings
컨테이너에 추가합니다.
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
localSettings.Values["exampleCompositeSetting"] = composite;
이 예제에서는 방금 만든 복합 값을 검색하는 방법을 보여줍니다.
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
(Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];
if (composite == null)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
로컬 파일 만들기 및 읽기
로컬 앱 데이터 스토어에서 파일을 만들고 업데이트하려면 Windows.Storage.StorageFolder.CreateFileAsync 및 Windows.Storage.FileIO.WriteTextAsync같은 파일 API를 사용합니다. 이 예제에서는 dataFile.txt
라고 명명된 파일을 localFolder
컨테이너에 만들고 현재 날짜와 시간을 파일에 씁니다. 이 ReplaceExisting 값이 있는 CreationCollisionOption 열거형에서는 파일이 이미 있는 경우 해당 파일을 바꾸도록 나타냅니다.
async void WriteTimestamp()
{
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
StorageFile sampleFile = await localFolder.CreateFileAsync("dataFile.txt",
CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}
로컬 앱 데이터 스토어에 있는 파일을 열고 읽으려면 Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, 및 Windows.Storage.FileIO.ReadTextAsync같은 파일 API를 사용합니다. 이 예제에서는 이전 단계에서 만든 dataFile.txt
파일을 열고 파일에서 날짜를 읽습니다. 다양한 위치에서 파일 리소스를 로드하는 방법에 대한 자세한 내용은 파일 리소스를 로드하는 방법을 참조하세요.
async void ReadTimestamp()
{
try
{
StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
String timestamp = await FileIO.ReadTextAsync(sampleFile);
// Data is contained in timestamp
}
catch (Exception)
{
// Timestamp not found
}
}
로밍 데이터
Warning
로밍 데이터 및 설정은 더 이상 Windows 11에서 지원되지 않습니다. 대체 방법으로는 Azure App Service를 권장합니다. Azure App Service는 광범위하게 지원되고 잘 문서화되어 있고 신뢰할 수 있으며 iOS, Android, 웹 등의 플랫폼 간/에코시스템 간 시나리오를 지원합니다.
다음 설명서는 Windows 10 버전 1909 및 그 이하 버전에 적용됩니다.
앱에서 로밍 데이터를 사용하는 경우, 사용자가 여러 디바이스에서 앱의 앱 데이터를 쉽게 동기화 상태로 유지할 수 있습니다. 사용자가 여러 디바이스에 앱을 설치하는 경우, OS는 앱 데이터를 동기화 상태로 유지하여 사용자가 두 번째 디바이스에서 앱에 대해 수행해야 하는 설정 작업의 양을 줄여줍니다. 로밍을 사용하면 사용자가 예를 들어 목록 작성과 같이, 다른 장치에서 중단한 작업을 바로 여기에서 계속할 수 있습니다. OS는 업데이트될 때 로밍 데이터를 클라우드로 복제하고, 앱을 설치한 다른 디바이스와 데이터를 동기화합니다.
OS는 각 앱이 로밍할 수 있는 앱 데이터의 크기를 제한합니다. 참조할 섹션은 ApplicationData.RoamingStorageQuota입니다. 앱이 한계에 도달하면, 앱의 총 로밍된 앱 데이터가 한계보다 작아질 때까지 앱의 앱 데이터가 클라우드에 복제되지 않습니다. 이러한 이유로 사용자 기본 설정, 링크 및 작은 데이터 파일에 대해서만 로밍 데이터를 사용하는 것이 좋습니다.
필요한 시간 간격 내에서 사용자가 일부 디바이스에서 액세스를 하는 한, 앱에 대한 로밍 데이터를 클라우드에서 사용할 수 있습니다. 사용자가 이 시간 간격보다 오랫동안 앱을 실행하지 않으면 로밍 데이터가 클라우드에서 제거됩니다. 사용자가 앱을 제거하면 로밍 데이터가 클라우드에서 자동으로 제거되지 않고 유지됩니다. 사용자가 시간 간격 내에 앱을 다시 설치하면 로밍 데이터가 클라우드에서 동기화됩니다.
로밍 데이터 수행 및 사용 안 함
로밍 데이터에 대한 중요 정보를 참조하세요.
- 사용자 기본 설정 및 사용자 지정, 링크 및 작은 데이터 파일에 로밍을 사용합니다. 예를 들어 로밍을 사용하여 모든 디바이스에서 사용자의 배경색 기본 설정을 유지합니다.
- 로밍을 사용하여 사용자가 여러 장치에서 작업을 계속할 수 있도록 합니다. 예를 들어 초안 전자 메일의 콘텐츠 또는 판독기 앱에서 가장 최근에 본 페이지와 같은 앱 데이터를 로밍합니다.
- 앱 데이터를 업데이트하여 DataChanged 이벤트를 처리합니다. 이 이벤트는 앱 데이터가 클라우드에서 동기화를 완료한 경우에 발생합니다.
- 원시 데이터가 아닌 콘텐츠에 대한 참조를 로밍합니다. 예를 들어 온라인 문서의 콘텐츠가 아닌 URL을 로밍합니다.
- 중요한 시간 설정의 경우, HighPriority 설정에 RoamingSettings을 연결하여 사용합니다.
- 디바이스와 관련된 앱 데이터를 로밍하지 마세요. 로컬 파일 리소스에 대한 경로 이름과 같은 일부 정보는 로컬에서만 적절합니다. 로컬 정보를 로밍하기로 결정한 경우, 보조 디바이스에서 정보가 유효하지 않아서 앱이 복구할 수 있는지 여부를 확인합니다.
- 대형 세트 앱 데이터는 로밍하지 마세요. 앱이 로밍할 수 있는 앱 데이터의 양에는 제한이 있습니다. 이 최대값을 얻으려면 RoamingStorageQuota 속성을 사용합니다. 앱이 한계에 도달하면, 앱 데이터 저장소의 크기가 더 이상 한계를 초과하지 않게 될 때까지 데이터를 로밍할 수 없습니다. 앱을 디자인할 때, 한계를 초과하지 않도록 더 큰 데이터에 바인딩하는 방법을 고려하는 것이 좋습니다. 예를 들어, 게임 상태를 저장하기 위해 각각 10KB가 필요한 경우라면, 사용자가 최대 10개의 게임을 저장하도록 앱에서 허용할 수 있습니다.
- 즉시 동기화를 사용하는 데이터에는 로밍을 사용하지 마세요. Windows는 인스턴트 동기화를 보장하지 않습니다. 사용자가 오프라인 상태이거나 대기 시간이 긴 네트워크에 있는 경우 로밍이 크게 지연될 수 있습니다. UI가 인스턴트 동기화에 의존하지 않는지 확인합니다.
- 자주 변경되는 데이터에는 로밍을 사용하지 않습니다. 예를 들어, 노래의 위치와 같이 자주 변경되는 정보를 앱에서 초 단위로 추적하는 경우 이를 로밍 앱 데이터로 저장하지 마세요. 대신, 현재 재생 중인 노래와 같이, 여전히 좋은 사용자 경험을 제공하는 정보는 빈도가 낮은 표현을 선택합니다.
필수 구성 요소 로밍
로밍 데이터에 대한 중요 정보를 참조하세요.
Microsoft 계정을 사용하여 디바이스에 로그온하는 경우 사용자 누구나 로밍 앱 데이터를 활용할 수 있습니다. 그러나 사용자 및 그룹 정책 관리자는 언제든지 디바이스에서 로밍 앱 데이터를 끌 수 있습니다. 사용자가 Microsoft 계정을 사용하지 않도록 선택하거나 데이터 로밍 기능을 사용하지 않도록 설정하면 앱은 계속 사용할 수 있지만 앱 데이터는 각 디바이스에 대해 로컬이 됩니다.
PasswordVault에 저장된 데이터는 사용자가 디바이스를 "신뢰할 수 있는 디바이스”로 지정한 경우에만 전환됩니다. 신뢰할 수 없는 디바이스의 경우, 이 자격 증명 모음에서 보호된 데이터가 로밍되지 않습니다.
충돌 해결
로밍 데이터에 대한 중요 정보를 참조하세요.
앱 데이터 로밍은 둘 이상의 디바이스에서 한 번에 동시 사용하기 위한 것이 아닙니다. 두 디바이스에서 특정 데이터 단위가 변경되어 동기화 중에 충돌이 발생하는 경우 시스템은 항상 마지막으로 작성된 값을 선호합니다. 이렇게 하면 앱이 가장 최신 정보를 활용할 수 있습니다. 데이터 단위가 설정 복합인 경우 설정 단위 수준에서 충돌 해결이 계속 발생합니다. 즉, 최신 변경 내용이 있는 복합 항목이 동기화됩니다.
데이터 작성 시기
로밍 데이터에 대한 중요 정보를 참조하세요.
설정의 예상 수명에 따라 데이터는 서로 다른 시간에 작성되어야 합니다. 변경 빈도가 낮고 속도가 느린 앱 데이터는 즉시 작성해야 합니다. 그러나 자주 변경되는 앱 데이터는 앱이 일시 중단된 경우는 물론 정기적으로(예: 5분마다 한 번) 작성돼야 합니다. 예를 들어 음악 앱에서는 새로운 곡이 재생되기 시작할 때마다 "현재 곡" 설정을 기록할 수 있지만 곡의 실제 위치는 일시 중단 시에만 기록해야 합니다.
과도한 사용량 보호
로밍 데이터에 대한 중요 정보를 참조하세요.
시스템에는 리소스의 부적절한 사용을 방지하기 위한 다양한 보호 메커니즘이 있습니다. 앱 데이터가 예상대로 전환되지 않으면 디바이스가 일시적으로 제한되었을 수 있습니다. 일정 시간 동안 기다리면 일반적으로 이 상황이 자동으로 해결되며 어떤 작업도 필요하지 않습니다.
버전 관리
로밍 데이터에 대한 중요 정보를 참조하세요.
앱 데이터는 버전 관리를 활용하여 한 데이터 구조에서 다른 데이터 구조로 업그레이드할 수 있습니다. 버전 번호는 앱 버전과 다르며, 필요에 따라 설정할 수 있습니다. 적용되지는 않지만, 최신 데이터를 나타내는 더 낮은 번호의 데이터 버전으로 전환하려고 하면 바람직하지 않은 복잡성(데이터 손실 포함) 문제가 발생할 수 있으므로 번호가 증가하는 버전을 사용하는 것이 좋습니다.
동일한 버전 번호를 가진 설치된 앱 간에서만 앱 데이터가 로밍됩니다. 예를 들어 버전 2의 디바이스는 서로 데이터를 전환하며 버전 3의 디바이스에서도 동일한 작업을 수행하지만, 버전 2를 실행하는 디바이스와 버전 3을 실행하는 디바이스 간에는 로밍이 발생하지 않습니다. 다른 디바이스에서 다양한 버전 번호를 활용하는 새 앱을 설치하는 경우 새로 설치된 앱은 가장 높은 버전 번호와 연결된 앱 데이터를 동기화합니다.
테스트 및 도구
로밍 데이터에 대한 중요 정보를 참조하세요.
개발자는 로밍 앱 데이터의 동기화를 트리거하기 위해 디바이스를 잠글 수 있습니다. 앱 데이터가 특정 시간 프레임 내에서 전환되지 않는 것 같으면 다음 항목을 검사하고 다음 내용이 지켜지는지 확인하세요.
- 로밍 데이터는 최대 크기를 초과하지 않습니다(자세한 내용은 RoamingStorageQuota 섹션을 참조하세요).
- 파일이 닫히고 제대로 해제됩니다.
- 동일한 버전의 앱을 실행하는 디바이스가 두 개 이상 있습니다.
로밍 데이터가 변경될 때 알림을 받도록 등록
로밍 데이터에 대한 중요 정보를 참조하세요.
로밍 앱 데이터를 사용하려면, 로밍 데이터 변경 내용을 등록하고 로밍 데이터 컨테이너를 검색하여 설정을 읽고 쓸 수 있어야 합니다.
로밍 데이터가 변경될 때 알림을 받도록 등록합니다.
로밍 데이터 변경 시 DataChanged 이벤트가 알림 표시합니다. 이 예제에서는
DataChangeHandler
를 로밍 데이터 변경에 대한 처리기로 설정합니다.
void InitHandlers()
{
Windows.Storage.ApplicationData.Current.DataChanged +=
new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
}
void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
{
// TODO: Refresh your data
}
앱의 설정 및 파일에 대한 컨테이너를 가져옵니다.
파일을 가져오려면 ApplicationData.RoamingSettings 속성을 사용하여 설정과 ApplicationData.RoamingFolder 속성을 가져옵니다.
Windows.Storage.ApplicationDataContainer roamingSettings =
Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.StorageFolder roamingFolder =
Windows.Storage.ApplicationData.Current.RoamingFolder;
로밍 설정 만들기 및 검색
로밍 데이터에 대한 중요 정보를 참조하세요.
이전 섹션에서 가져온 컨테이너의 설정에 액세스하려면 ApplicationDataContainer.Values 속성을 roamingSettings
사용합니다. 이 예제에서는 exampleSetting
라고 명명된 간단한 설정과 composite
라고 명명된 복합 값을 만듭니다.
// Simple setting
roamingSettings.Values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app
roamingSettings.values["HighPriority"] = "65";
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
roamingSettings.Values["exampleCompositeSetting"] = composite;
이 예제에서는 방금 만든 설정을 검색합니다.
// Simple setting
Object value = roamingSettings.Values["exampleSetting"];
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
(Windows.Storage.ApplicationDataCompositeValue)roamingSettings.Values["exampleCompositeSetting"];
if (composite == null)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
로밍 파일 만들기 및 검색
로밍 데이터에 대한 중요 정보를 참조하세요.
로밍 앱 데이터 스토어에서 파일을 만들고 업데이트하려면 Windows.Storage.StorageFolder.CreateFileAsync 및 Windows.Storage.FileIO.WriteTextAsync같은 파일 API를 사용합니다. 이 예제에서는 dataFile.txt
라고 명명된 파일을 roamingFolder
컨테이너에 만들고 현재 날짜와 시간을 파일에 씁니다. 이 ReplaceExisting 값이 있는 CreationCollisionOption 열거형에서는 파일이 이미 있는 경우 해당 파일을 바꾸도록 나타냅니다.
async void WriteTimestamp()
{
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
StorageFile sampleFile = await roamingFolder.CreateFileAsync("dataFile.txt",
CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}
로밍 앱 데이터 스토어에서 파일을 열고 읽으려면 Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, 및 Windows.Storage.FileIO.ReadTextAsync과 같은 파일 API를 사용합니다. 이 예제에서는 이전 섹션에서 만든 dataFile.txt
파일을 열고 파일에서 날짜를 읽습니다. 다양한 위치에서 파일 리소스를 로드하는 방법에 대한 자세한 내용은 파일 리소스를 로드하는 방법을 참조하세요.
async void ReadTimestamp()
{
try
{
StorageFile sampleFile = await roamingFolder.GetFileAsync("dataFile.txt");
String timestamp = await FileIO.ReadTextAsync(sampleFile);
// Data is contained in timestamp
}
catch (Exception)
{
// Timestamp not found
}
}
임시 앱 데이터
임시 앱 데이터 저장소는 캐시처럼 작동합니다. 해당 파일은 로밍되지 않으며 언제든지 제거할 수 있습니다. 시스템 유지 관리 작업은 언제든지 이 위치에 저장된 데이터를 자동으로 삭제할 수 있습니다. 사용자는 디스크 정리를 사용하여 임시 데이터 저장소에서 파일을 지울 수도 있습니다. 임시 앱 데이터는 앱 세션 중에 임시 정보를 저장하는 데 사용할 수 있습니다. 필요 시 사용된 공간을 시스템이 회수할 수 있으므로, 이 데이터가 앱 세션이 끝날 때까지 유지된다는 보장은 없습니다. 위치는 temporaryFolder 속성을 통해 사용 가능합니다.
임시 데이터 컨테이너 검색
파일을 가져오려면 ApplicationData.TemporaryFolder 속성을 사용합니다. 다음 단계에서는 이 단계로부터 가져온 temporaryFolder
변수를 사용합니다.
Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;
임시 파일 만들기 및 읽기
임시 앱 데이터 스토어에서 파일을 만들고 업데이트하려면 Windows.Storage.StorageFolder.CreateFileAsync 및 Windows.Storage.FileIO.WriteTextAsync와 같은 파일 API를 사용합니다. 이 예제에서는 dataFile.txt
라고 명명된 파일을 temporaryFolder
컨테이너에 만들고 현재 날짜와 시간을 파일에 씁니다. 이 ReplaceExisting 값이 있는 CreationCollisionOption 열거형에서는 파일이 이미 있는 경우 해당 파일을 바꾸도록 나타냅니다.
async void WriteTimestamp()
{
Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter =
new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
StorageFile sampleFile = await temporaryFolder.CreateFileAsync("dataFile.txt",
CreateCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}
임시 앱 데이터 스토어에서 파일을 열고 읽으려면 Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync, 및 Windows.Storage.FileIO.ReadTextAsync와 같은 파일 API를 사용합니다. 이 예제에서는 이전 단계에서 만든 dataFile.txt
파일을 열고 파일에서 날짜를 읽습니다. 다양한 위치에서 파일 리소스를 로드하는 방법에 대한 자세한 내용은 파일 리소스를 로드하는 방법을 참조하세요.
async void ReadTimestamp()
{
try
{
StorageFile sampleFile = await temporaryFolder.GetFileAsync("dataFile.txt");
String timestamp = await FileIO.ReadTextAsync(sampleFile);
// Data is contained in timestamp
}
catch (Exception)
{
// Timestamp not found
}
}
컨테이너를 사용하여 앱 데이터 구성
앱 데이터 설정 및 파일을 손쉽게 구성하려면, 디렉터리로 직접 작업하는 대신 컨테이너( ApplicationDataContainer 객체로 표시)를 만듭니다. 로컬, 로밍 및 임시 앱 데이터 저장소에 컨테이너를 추가할 수 있습니다. 컨테이너는 최대 32개 수준까지 중첩 가능합니다.
설정 컨테이너를 만들려면, ApplicationDataContainer.CreateContainer 메서드를 호출합니다. 이 예제에서는 exampleContainer
라고 명명된 로컬 설정 컨테이너를 만들고 exampleSetting
라고 명명된 설정을 추가합니다. 이 Always 값은 ApplicationDataCreateDisposition 열거형에 있습니다. 해당 값으로 컨테이너가 아직 없는 경우, 컨테이너가 생성되었음을 나타냅니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Setting in a container
Windows.Storage.ApplicationDataContainer container =
localSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);
if (localSettings.Containers.ContainsKey("exampleContainer"))
{
localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";
}
앱 설정 및 컨테이너 삭제
앱에 더 이상 필요하지 않은 간단한 설정을 삭제하려면 ApplicationDataContainerSettings.Remove 메서드를 사용합니다. 다음은 앞에서 만든 exampleSetting
로컬 설정을 삭제하는 예제입니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete simple setting
localSettings.Values.Remove("exampleSetting");
복합 설정을 삭제하려면, ApplicationDataCompositeValue.Remove 메서드를 사용합니다. 다음은 이전 예제에서 만든 exampleCompositeSetting
로컬 복합 설정을 삭제하는 예제입니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete composite setting
localSettings.Values.Remove("exampleCompositeSetting");
컨테이너를 삭제하려면, ApplicationDataContainer.DeleteContainer 메서드를 호출합니다. 다음은 앞에서 만든 exampleContainer
로컬 설정 컨테이너를 삭제하는 예제입니다.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete container
localSettings.DeleteContainer("exampleContainer");
앱 데이터 버전 관리
필요에 따라 앱에 대한 앱 데이터의 버전을 지정할 수 있습니다. 이렇게 하면 이전 버전의 앱과 호환성 문제를 일으키지 않으면서 앱 데이터의 형식을 변경하는 이후 버전의 앱을 만들 수 있습니다. 앱은 데이터 저장소에서 앱 데이터의 버전을 검사하고, 버전이 앱의 예상보다 작을 경우 앱 데이터를 앱에서 새 형식으로 업데이트하고 버전을 업데이트해야 합니다. 자세한 내용은Application.Version 속성 및 ApplicationData.SetVersionAsync 메서드 섹션을 참조하세요.
관련된 문서
Windows developer