ApplicationData Kelas

Definisi

Menyediakan akses ke penyimpanan data aplikasi. Data aplikasi terdiri dari file dan pengaturan yang lokal, roaming, atau sementara.

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
Warisan
Object Platform::Object IInspectable ApplicationData
Atribut
Penerapan

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Contoh kode berikut menunjukkan cara membaca atau menulis ke folder ApplicationData pilihan Anda. Contoh ini menggunakan LocalFolder, tetapi kode dapat sedikit dimodifikasi untuk mengakses LocalCacheFolder, RoamingFolder, SharedLocalFolder, atau TemporaryFolder berdasarkan bagaimana data Anda harus disimpan. SharedLocalFolder memiliki beberapa batasan dan memerlukan izin khusus untuk mengakses, untuk informasi selengkapnya, lihat 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

Untuk sampel dan informasi selengkapnya tentang membaca dan menulis ke file, lihat Membuat, menulis, dan membaca file.

Keterangan

Jenis data aplikasi

ApplicationData menyediakan penyimpanan lokal, roaming, dan sementara untuk data aplikasi per pengguna. Gunakan kelas ini untuk mempertahankan data khusus aplikasi antara sesi, pengguna, dan di beberapa perangkat.

ApplicationData tidak menyediakan akses ke file dalam paket aplikasi. Untuk melakukan ini, gunakan Windows.ApplicationModel.Package.InstalledLocation.

ApplicationData.Current memberi Anda instans ApplicationData aplikasi. Gunakan instans ini untuk mendapatkan folder atau pengaturan aplikasi.

Folder digunakan untuk menyimpan data aplikasi sebagai file pada sistem file. Pengaturan aplikasi disimpan dalam pasangan kunci/nilai yang dapat diatur ke set berlapis. Data pengaturan disimpan di registri Windows.

Ini adalah jenis utama data aplikasi:

  • Lokal: disimpan di perangkat, dicadangkan di cloud, dan bertahan di seluruh pembaruan
  • LocalCache: data persisten yang ada di perangkat saat ini, tidak dicadangkan, dan bertahan di seluruh pembaruan
  • SharedLocal: persisten di semua pengguna aplikasi
  • Roaming: ada di semua perangkat tempat pengguna menginstal aplikasi
  • Sementara: dapat dihapus oleh sistem kapan saja

Menggunakan folder aplikasi

LocalFolder bertahan di seluruh pembaruan dan dicadangkan ke cloud sebagai bagian dari cadangan perangkat. Biasanya, folder ini harus digunakan untuk data pengguna yang akan hilang jika tidak dicadangkan. Beberapa contoh data yang disimpan di LocalFolder adalah:

  • gambar pengguna untuk aplikasi seni
  • riwayat latihan harian untuk aplikasi kebugaran
  • daftar belanja untuk aplikasi todo Dengan menyimpan informasi di LocalFolder, pengguna tidak akan kehilangan data setelah mengatur ulang perangkat atau beralih ke perangkat baru. Untuk jenis data lokal lain yang mudah dibuat ulang dan tidak diperlukan untuk pencadangan dan pemulihan, gunakan LocalCacheFolder atau TemporaryFolder.

LocalCacheFolder dan TemporaryFolder disimpan secara lokal dan tidak dicadangkan ke cloud. LocalCacheFolder berada di bawah kendali aplikasi tersebut dan persisten di seluruh sesi aplikasi. LocalCacheFolder harus digunakan untuk konten yang dihasilkan yang diperlukan di seluruh sesi aplikasi, seperti file cache, log, atau token autentikasi. TemporaryFolder tidak dijamin persisten di seluruh sesi dan dapat dihapus oleh sistem kapan saja.

RoamingFolder biasanya digunakan untuk preferensi pengguna dan penyesuaian, tautan, dan file data kecil. Konten RoamingFolder menjelajah di seluruh perangkat pengguna dan instans aplikasi. RoamingFolder tidak boleh digunakan untuk data dalam jumlah besar, data khusus untuk perangkat, atau data yang bergantung pada sinkronisasi instan.

Folder lain, SharedLocalFolder, persisten di seluruh akun pengguna aplikasi dan harus digunakan untuk file besar yang diakses oleh beberapa pengguna. Ada beberapa pengaturan tambahan yang diperlukan untuk mengakses SharedLocalFolder. Untuk informasi selengkapnya tentang mengakses dan menggunakan folder ini, lihat SharedLocalFolder.

Anda dapat menyimpan data aplikasi dalam format khusus aplikasi dan versi. Untuk informasi selengkapnya, lihat Versi dan SetVersionAsync.

Untuk detail selengkapnya tentang menggunakan API ini, lihat Menyimpan dan mengambil pengaturan dan data aplikasi lainnya.

Properti

Current

Menyediakan akses ke penyimpanan data aplikasi yang terkait dengan paket aplikasi.

LocalCacheFolder

Mendapatkan folder di penyimpanan data aplikasi lokal tempat Anda dapat menyimpan file yang tidak disertakan dalam pencadangan dan pemulihan.

LocalFolder

Mendapatkan folder akar di penyimpanan data aplikasi lokal. Folder ini dicadangkan ke cloud.

LocalSettings

Mendapatkan kontainer pengaturan aplikasi di penyimpanan data aplikasi lokal.

RoamingFolder

Mendapatkan folder akar di penyimpanan data aplikasi roaming.

RoamingSettings

Mendapatkan kontainer pengaturan aplikasi di penyimpanan data aplikasi roaming.

RoamingStorageQuota

Mendapatkan ukuran maksimum data yang dapat disinkronkan ke cloud dari penyimpanan data aplikasi roaming.

SharedLocalFolder

Mendapatkan folder akar di penyimpanan data aplikasi bersama.

TemporaryFolder

Mendapatkan folder akar di penyimpanan data aplikasi sementara.

Version

Mendapatkan nomor versi data aplikasi di penyimpanan data aplikasi.

Metode

ClearAsync()

Menghapus semua data aplikasi dari penyimpanan data aplikasi lokal, roaming, dan sementara.

Catatan

Metode ClearAsync() mengalami kesalahan jika ada handel file yang terbuka. Anda harus berhati-hati untuk menutup semua file yang terbuka sebelum memanggil ClearAsync.

ClearAsync(ApplicationDataLocality)

Menghapus semua data aplikasi dari penyimpanan data aplikasi yang ditentukan.

Catatan

Metode ClearAsync(ApplicationDataLocality) mengalami kesalahan jika ada handel file yang terbuka. Anda harus berhati-hati untuk menutup semua file yang terbuka sebelum memanggil ClearAsync.

ClearPublisherCacheFolderAsync(String)

Menghapus file dan subfolder dari subfolder folder penyimpanan bersama yang ditentukan untuk penerbit aplikasi saat ini.

Close()

Catatan

Anggota ini tidak diimplementasikan dalam C#.

Dispose()

Melakukan tugas yang ditentukan aplikasi yang terkait dengan membebaskan, melepaskan, atau mereset sumber daya yang tidak terkelola.

GetForUserAsync(User)

Metode statis yang mengembalikan ApplicationData untuk Pengguna.

GetPublisherCacheFolder(String)

Mendapatkan subfolder folder penyimpanan bersama yang ditentukan untuk penerbit aplikasi saat ini.

SetVersionAsync(UInt32, ApplicationDataSetVersionHandler)

Mengatur nomor versi data aplikasi di penyimpanan data aplikasi.

SignalDataChanged()

Mengirim peristiwa DataChanged ke semua penanganan aktivitas terdaftar.

Acara

DataChanged

Terjadi saat roaming data aplikasi disinkronkan.

Berlaku untuk

Lihat juga