Sprache

ApplicationData Klasse

Definition

Bietet Zugriff auf den Anwendungsdatenspeicher. Anwendungsdaten bestehen aus Dateien und Einstellungen, die entweder lokal, roaming oder temporär sind.

public ref class ApplicationData sealed
public ref class ApplicationData sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
class ApplicationData final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
class ApplicationData final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
public sealed class ApplicationData
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.MTA)]
public sealed class ApplicationData : System.IDisposable
Public NotInheritable Class ApplicationData
Public NotInheritable Class ApplicationData
Implements IDisposable
Vererbung
Object Platform::Object IInspectable ApplicationData
Attribute
Implementiert

Windows-Anforderungen

Anforderungen Beschreibung
Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

Im folgenden Codebeispiel wird das Lesen oder Schreiben in einen ApplicationData-Ordner Ihrer Wahl veranschaulicht. In diesem Beispiel wird " LocalFolder" verwendet, der Code kann jedoch leicht geändert werden, um auf die LocalCacheFolder-, RoamingFolder-, SharedLocalFolder- oder TemporaryFolder-Methode zuzugreifen, basierend auf der Datenspeicherung. SharedLocalFolder hat einige Einschränkungen und benötigt spezielle Berechtigungen für den Zugriff, weitere Informationen finden Sie unter SharedLocalFolder.

// This example code can be used to read or write to an ApplicationData folder of your choice.

// Change this to Windows.Storage.StorageFolder roamingFolder = Windows.Storage.ApplicationData.Current.RoamingFolder;
// to use the RoamingFolder instead, for example.
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

// Write data to a file
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(DateTime.Now));
}

// Read data from a file
async Task ReadTimestamp()
{
    try
    {
        StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
        String timestamp = await FileIO.ReadTextAsync(sampleFile);
        // Data is contained in timestamp
    }
    catch (FileNotFoundException e)
    {
        // Cannot find file
    }
    catch (IOException e)
    {
        // Get information from the exception, then throw
        // the info to the parent method.
        if(e.Source != null)
        {
            Debug.WriteLine("IOException source: {0}", e.Source);
        }
        throw;
    }
}
#include <winrt/Windows.Globalization.h>
#include <winrt/Windows.Globalization.DateTimeFormatting.h>
#include <winrt/Windows.Storage.h>

using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Storage;
using namespace Windows::UI::Xaml;

// This example code can be used to read or write to an ApplicationData folder of your choice.

// Change this to StorageFolder m_localFolder{ Windows::Storage::ApplicationData::Current().RoamingFolder() }; to 
// use the RoamingFolder instead, for example.
StorageFolder m_localFolder{ Windows::Storage::ApplicationData::Current().LocalFolder() };

// Write data to a file.
IAsyncAction MainPage::WriteTimestampAsync()
{
    StorageFile sampleFile{ co_await m_localFolder.CreateFileAsync(L"dataFile.txt", CreationCollisionOption::ReplaceExisting) };
    Windows::Globalization::Calendar calendar;
    auto now = calendar.GetDateTime();
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter formatter{ L"longtime" };

    try
    {
        co_await FileIO::WriteTextAsync(sampleFile, formatter.Format(now));
    }
    catch (winrt::hresult_error const& /* ex */)
    {
        // Timestamp not written.
    }
}

// Read data from a file.
IAsyncAction MainPage::ReadTimestampAsync()
{
    StorageFile file{ co_await m_localFolder.GetFileAsync(L"dataFile.txt") };

    try
    {
        winrt::hstring timestamp{ co_await Windows::Storage::FileIO::ReadTextAsync(file) };
    }
    catch (winrt::hresult_error const& /* ex */)
    {
        // Timestamp not read.
    }
}

IAsyncAction MainPage::ClickHandler(IInspectable const&, RoutedEventArgs const&)
{
    myButton().Content(box_value(L"Clicked"));

    co_await WriteTimestampAsync();
    co_await ReadTimestampAsync();
}
// This example code can be used to read or write to an ApplicationData folder of your choice.

// Change this to StorageFolder^ roamingFolder = ApplicationData::Current->RoamingFolder; to 
// use the RoamingFolder instead, for example.
StorageFolder^ localFolder = ApplicationData::Current->LocalFolder;

// Write data to a file
void MainPage::WriteTimestamp()
{
   concurrency::task<StorageFile^> fileOperation = 
       localFolder->CreateFileAsync("dataFile.txt", CreationCollisionOption::ReplaceExisting);
   fileOperation.then([this](StorageFile^ sampleFile)
   {
      auto calendar = ref new Calendar;
      auto now = calendar->ToDateTime();
      auto formatter = ref new Windows::Globalization::DateTimeFormatting::DateTimeFormatter("longtime");

      return FileIO::WriteTextAsync(sampleFile, formatter->Format(now));
   }).then([this](task<void> previousOperation) {
      try {
         previousOperation.get();
      } catch (Platform::Exception^) {
         // Timestamp not written
      }
   });
}

// Read data from a file
void MainPage::ReadTimestamp()
{
   concurrency::task<StorageFile^> getFileOperation(localFolder->GetFileAsync("dataFile.txt"));
   getFileOperation.then([this](StorageFile^ file)
   {
      return FileIO::ReadTextAsync(file);
   }).then([this](concurrency::task<String^> previousOperation) {
      String^ timestamp;

      try {
         // Data is contained in timestamp
         timestamp = previousOperation.get();
      } catch (...) {
         // Timestamp not found
      }
   });
}
' This example code can be used to read or write to an ApplicationData folder of your choice.

' Change this to Dim roamingFolder As Windows.Storage.StorageFolder = Windows.Storage.ApplicationData.Current.RoamingFolder
' to use the RoamingFolder instead, for example.
Dim localFolder As Windows.Storage.StorageFolder = Windows.Storage.ApplicationData.Current.LocalFolder

' Write data to a file
Private Async Sub WriteTimestamp()
   Dim formatter As DateTimeFormatter = New DateTimeFormatter("longtime")

   Dim sampleFile As StorageFile = Await localFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting)
   Await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
End Sub

' Read data from a file
Private Async Function ReadTimestamp() As Task
   Try
      Dim sampleFile As StorageFile = Await localFolder.GetFileAsync("dataFile.txt")
      Dim timestamp As string = Await FileIO.ReadTextAsync(sampleFile)
      ' Data is contained in timestamp
   Catch e1 As Exception
      ' Timestamp not found
   End Try
End Function

Weitere Beispiele und Informationen zum Lesen und Schreiben in eine Datei finden Sie unter Erstellen, Schreiben und Lesen einer Datei.

Hinweise

Anwendungsdatentypen

ApplicationData bietet lokalen, Roaming- und temporären Speicher für App-Daten pro Benutzer. Verwenden Sie diese Klasse, um appspezifische Daten zwischen Sitzungen, Benutzern und auf mehreren Geräten beizubehalten.

ApplicationData bietet keinen Zugriff auf Dateien in einem App-Paket. Verwenden Sie dazu Windows. ApplicationModel.Package.InstalledLocation.

ApplicationData.Current gibt Ihnen die ApplicationData-Instanz der App. Verwenden Sie diese Instanz, um App-Ordner oder -Einstellungen abzurufen.

Ordner werden verwendet, um App-Daten als Dateien im Dateisystem zu speichern. App-Einstellungen werden in Schlüssel-Wert-Paaren gespeichert, die in geschachtelten Sätzen angeordnet werden können. Einstellungsdaten werden in der Windows Registrierung gespeichert.

Dies sind die wichtigsten Arten von App-Daten:

  • Lokal: auf dem Gerät gespeichert, in der Cloud gesichert und über Updates hinweg beibehalten
  • LocalCache: Persistente Daten, die auf dem aktuellen Gerät vorhanden sind, nicht gesichert und über Updates hinweg beibehalten
  • SharedLocal: persistent für alle App-Benutzer
  • Roaming: ist auf allen Geräten vorhanden, auf denen der Benutzer die App installiert hat.
  • Temporär: kann jederzeit vom System gelöscht werden.

Verwenden von Anwendungsordnern

LocalFolder bleibt über Updates hinweg erhalten und wird im Rahmen der Gerätesicherung in der Cloud gesichert. In der Regel sollte dieser Ordner für Benutzerdaten verwendet werden, die verloren gehen, wenn er nicht gesichert wurde. Einige Beispiele für in LocalFolder gespeicherte Daten sind:

  • Ein Benutzer, der für eine Kunst-App zeichnet
  • tägliche Übungshistorie für eine Fitness-App
  • eine Einkaufsliste für eine Todo-App

Durch das Speichern von Informationen im LocalFolder verliert der Benutzer keine Daten, nachdem das Gerät zurückgesetzt oder zu einem neuen Gerät gewechselt wurde. Verwenden Sie für andere Typen lokaler Daten, die einfach neu erstellt werden können und nicht für die Sicherung und Wiederherstellung erforderlich sind, den LocalCacheFolder oder TemporaryFolder.

LocalCacheFolder und TemporaryFolder werden sowohl lokal gespeichert als auch nicht in der Cloud gesichert. LocalCacheFolder befindet sich unter der Kontrolle über diese App und ist über App-Sitzungen hinweg persistent. LocalCacheFolder sollte für generierte Inhalte verwendet werden, die in App-Sitzungen benötigt werden, z. B. zwischengespeicherte Dateien, Protokolle oder Authentifizierungstoken. TemporaryFolder ist nicht garantiert, dass sie über Sitzungen hinweg dauerhaft ist und jederzeit vom System gelöscht werden kann.

RoamingFolder wird in der Regel für Benutzereinstellungen und Anpassungen, Links und kleine Datendateien verwendet. Der Inhalt von RoamingFolder wird auf den Geräten und App-Instanzen des Benutzers übertragen. RoamingFolder sollte nicht für große Datenmengen, datenspezifisch für ein Gerät oder Daten verwendet werden, die auf der sofortigen Synchronisierung basieren.

Ein anderer Ordner, SharedLocalFolder, ist für App-Benutzerkonten persistent und sollte für große Dateien verwendet werden, auf die von mehreren Benutzern zugegriffen wird. Für den Zugriff auf SharedLocalFolder ist eine zusätzliche Einrichtung erforderlich. Weitere Informationen zum Zugreifen und Verwenden dieses Ordners finden Sie unter SharedLocalFolder.

Sie können Ihre App-Daten in app-spezifischen, versionsspezifischen Formaten speichern. Weitere Informationen finden Sie unter Version und SetVersionAsync.

Weitere Informationen zur Verwendung dieser APIs finden Sie unter Store und Abrufen von Einstellungen und anderen App-Daten.

Eigenschaften

Name Beschreibung
Current

Bietet Zugriff auf den App-Datenspeicher, der dem App-Paket zugeordnet ist.

LocalCacheFolder

Ruft den Ordner im lokalen App-Datenspeicher ab, in dem Sie Dateien speichern können, die nicht in der Sicherung und Wiederherstellung enthalten sind.

LocalFolder

Ruft den Stammordner im lokalen App-Datenspeicher ab. Dieser Ordner wird in der Cloud gesichert.

LocalSettings

Ruft den Container für Anwendungseinstellungen im lokalen App-Datenspeicher ab.

RoamingFolder

Ruft den Stammordner im Roaming-App-Datenspeicher ab.

RoamingSettings

Ruft den Container für Anwendungseinstellungen im Roaming-App-Datenspeicher ab.

RoamingStorageQuota

Ruft die maximale Größe der Daten ab, die aus dem Roaming-App-Datenspeicher mit der Cloud synchronisiert werden können.

SharedLocalFolder

Ruft den Stammordner im freigegebenen App-Datenspeicher ab.

TemporaryFolder

Ruft den Stammordner im temporären App-Datenspeicher ab.

Version

Ruft die Versionsnummer der Anwendungsdaten im App-Datenspeicher ab.

Methoden

Name Beschreibung
ClearAsync()

Entfernt alle Anwendungsdaten aus den lokalen, Roaming- und temporären App-Datenspeichern.

Hinweis

Bei der ClearAsync()-Methode tritt ein Fehler auf, wenn geöffnete Dateihandles vorhanden sind. Bevor Sie ClearAsync aufrufen, sollten Sie alle geöffneten Dateien schließen.

ClearAsync(ApplicationDataLocality)

Entfernt alle Anwendungsdaten aus dem angegebenen App-Datenspeicher.

Hinweis

Bei der ClearAsync(ApplicationDataLocality)-Methode tritt ein Fehler auf, wenn geöffnete Dateihandles vorhanden sind. Bevor Sie ClearAsync aufrufen, sollten Sie alle geöffneten Dateien schließen.

ClearPublisherCacheFolderAsync(String)

Löscht die Dateien und Unterordner aus dem angegebenen Unterordner des freigegebenen Speicherordners für den Herausgeber der aktuellen App.

Close()

Hinweis

Dieses Element ist in C# nicht implementiert.

Dispose()

Führt anwendungsdefinierte Aufgaben aus, die mit dem Freigeben, Freigeben oder Zurücksetzen nicht verwalteter Ressourcen verknüpft sind.

GetForUserAsync(User)

Statische Methode, die applicationData für einen Benutzer zurückgibt.

GetPublisherCacheFolder(String)

Ruft den angegebenen Unterordner des freigegebenen Speicherordners für den Herausgeber der aktuellen App ab.

SetVersionAsync(UInt32, ApplicationDataSetVersionHandler)

Legt die Versionsnummer der Anwendungsdaten im App-Datenspeicher fest.

SignalDataChanged()

Sendet ein DataChanged-Ereignis an alle registrierten Ereignishandler.

Events

Name Beschreibung
DataChanged

Tritt auf, wenn Roaminganwendungsdaten synchronisiert werden.

Gilt für:

Siehe auch