Freigeben über


ApplicationData Klasse

Definition

Ermöglicht den 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

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 veranschaulicht, wie Sie einen ApplicationData-Ordner Ihrer Wahl lesen oder in diesen schreiben. In diesem Beispiel wird LocalFolder verwendet, aber der Code kann geringfügig geändert werden, um auf LocalCacheFolder, RoamingFolder, SharedLocalFolder oder TemporaryFolder zuzugreifen, je nachdem, wie Ihre Daten gespeichert werden sollen. 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

Arten von Anwendungsdaten

ApplicationData bietet lokalen, Roaming- und temporären Speicher für App-Daten auf Benutzerbasis. Verwenden Sie diese Klasse, um App-spezifische 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 bietet Ihnen die ApplicationData-instance der App. Verwenden Sie diese instance, 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 organisiert werden können. Einstellungsdaten werden in der Windows-Registrierung gespeichert.

Dies sind die Standard Arten von App-Daten:

  • Lokal: Auf dem Gerät gespeichert, in der Cloud gesichert und updatesübergreifend beibehalten
  • LocalCache: Persistente Daten, die auf dem aktuellen Gerät vorhanden sind, nicht gesichert werden und updatesübergreifend beibehalten werden
  • 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 vom System jederzeit gelöscht werden

Verwenden von Anwendungsordnern

LocalFolder bleibt updatesübergreifend erhalten und wird als Teil der Gerätesicherung in der Cloud gesichert. In der Regel sollte dieser Ordner für Benutzerdaten verwendet werden, die verloren gehen würden, wenn er nicht gesichert würde. Einige Beispiele für in LocalFolder gespeicherte Daten sind:

  • eine Benutzerzeichnung für eine Kunst-App
  • Täglicher Übungsverlauf für eine Fitness-App
  • eine Einkaufsliste für eine Todo-App Durch das Speichern von Informationen im LocalFolder gehen dem Benutzer keine Daten verloren, nachdem er das Gerät zurückgesetzt oder zu einem neuen Gerät gewechselt hat. Verwenden Sie für andere Arten von lokalen Daten, die einfach neu erstellt werden können und für die Sicherung und Wiederherstellung nicht erforderlich sind, den LocalCacheFolder oder TemporaryFolder.

LocalCacheFolder und TemporaryFolder werden lokal gespeichert und nicht in der Cloud gesichert. LocalCacheFolder wird von dieser App gesteuert und ist über App-Sitzungen hinweg persistent. LocalCacheFolder sollte für generierte Inhalte verwendet werden, die über App-Sitzungen hinweg benötigt werden, z. B. zwischengespeicherte Dateien, Protokolle oder Authentifizierungstoken. TemporaryFolder ist nicht garantiert, dass er sitzungsübergreifend persistent ist und kann vom System jederzeit gelöscht werden.

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 verschoben. RoamingFolder sollte nicht für große Datenmengen, gerätespezifische Daten oder Daten verwendet werden, die auf der sofortigen Synchronisierung beruhen.

Ein anderer Ordner, SharedLocalFolder, ist für alle App-Benutzerkonten persistent und sollte für große Dateien verwendet werden, auf die mehrere Benutzer zugreifen. Für den Zugriff auf SharedLocalFolder ist eine zusätzliche Einrichtung erforderlich. Weitere Informationen zum Zugreifen auf diesen Ordner und die Verwendung dieses Ordners finden Sie unter SharedLocalFolder.

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

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

Eigenschaften

Current

Bietet Zugriff auf den App-Datenspeicher, der dem App-Paket der App 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 Anwendungseinstellungencontainer im lokalen App-Datenspeicher ab.

RoamingFolder

Ruft den Stammordner im Roaming-App-Datenspeicher ab.

RoamingSettings

Ruft den Anwendungseinstellungencontainer 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

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. Sie sollten darauf achten, alle geöffneten Dateien zu schließen, bevor Sie ClearAsync aufrufen.

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. Sie sollten darauf achten, alle geöffneten Dateien zu schließen, bevor Sie ClearAsync aufrufen.

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 anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen.

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.

Ereignisse

DataChanged

Tritt auf, wenn Roaminganwendungsdaten synchronisiert werden.

Gilt für:

Weitere Informationen