ApplicationData Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Proporciona acceso al almacén de datos de la aplicación. Los datos de la aplicación constan de archivos y configuraciones que son locales, móviles o temporales.
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
- Herencia
- Atributos
- Implementaciones
Requisitos de Windows
Familia de dispositivos |
Windows 10 (se introdujo en la versión 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)
|
Ejemplos
En el ejemplo de código siguiente se muestra cómo leer o escribir en una carpeta ApplicationData de su elección. En este ejemplo se usa LocalFolder, pero el código se puede modificar ligeramente para tener acceso a LocalCacheFolder, RoamingFolder, SharedLocalFolder o TemporaryFolder en función de cómo se deben almacenar los datos. SharedLocalFolder tiene algunas restricciones y necesita permisos especiales para acceder, para obtener más información, consulte 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
Para obtener más ejemplos e información sobre cómo leer y escribir en un archivo, vea Crear, escribir y leer un archivo.
Comentarios
Tipos de datos de aplicación
ApplicationData proporciona almacenamiento local, móvil y temporal para los datos de la aplicación por usuario. Use esta clase para conservar los datos específicos de la aplicación entre sesiones, usuarios y en varios dispositivos.
ApplicationData no proporciona acceso a los archivos de un paquete de aplicación. Para ello, use Windows.ApplicationModel.Package.InstalledLocation.
ApplicationData.Current proporciona la instancia applicationData de la aplicación. Use esta instancia para obtener las carpetas o la configuración de la aplicación.
Las carpetas se usan para almacenar los datos de la aplicación como archivos en el sistema de archivos. La configuración de la aplicación se almacena en pares clave-valor que se pueden organizar en conjuntos anidados. Los datos de configuración se guardan en el Registro de Windows.
Estos son los tipos principales de datos de la aplicación:
- Local: se almacena en el dispositivo, se realiza una copia de seguridad en la nube y se conserva en todas las actualizaciones.
- LocalCache: datos persistentes que existen en el dispositivo actual, no se realiza una copia de seguridad y se conservan entre las actualizaciones.
- SharedLocal: persistente en todos los usuarios de la aplicación
- Itinerancia: existe en todos los dispositivos en los que el usuario ha instalado la aplicación
- Temporal: el sistema puede eliminarlo en cualquier momento.
Uso de carpetas de aplicación
LocalFolder persiste en las actualizaciones y se realiza una copia de seguridad en la nube como parte de la copia de seguridad del dispositivo. Normalmente, esta carpeta se debe usar para los datos de usuario que se perderían si no se hacía una copia de seguridad. Algunos ejemplos de datos almacenados en LocalFolder son:
- un usuario dibujando para una aplicación de arte
- historial diario de ejercicios para una aplicación de fitness
- una lista de compras para una aplicación de tareas pendientes Almacenando información en LocalFolder, el usuario no perderá datos después de restablecer el dispositivo o cambiar a un nuevo dispositivo. Para otros tipos de datos locales que son fáciles de volver a crear y no son necesarios para la copia de seguridad y restauración, use LocalCacheFolder o TemporaryFolder.
LocalCacheFolder y TemporaryFolder se almacenan localmente y no se realizan copias de seguridad en la nube. LocalCacheFolder está bajo control de esa aplicación y es persistente en las sesiones de la aplicación. LocalCacheFolder debe usarse para el contenido generado necesario en las sesiones de la aplicación, como archivos almacenados en caché, registros o tokens de autenticación. TemporaryFolder no se garantiza que sea persistente entre sesiones y el sistema puede eliminarlo en cualquier momento.
RoamingFolder se usa normalmente para preferencias de usuario y personalizaciones, vínculos y archivos de datos pequeños. El contenido de RoamingFolder roamer entre los dispositivos del usuario y las instancias de la aplicación. RoamingFolder no debe usarse para grandes cantidades de datos, datos específicos de un dispositivo o datos que se basan en la sincronización instantánea.
Otra carpeta, SharedLocalFolder, es persistente en las cuentas de usuario de la aplicación y se debe usar para archivos de gran tamaño a los que acceden varios usuarios. Se requiere una configuración adicional para acceder a SharedLocalFolder. Para obtener más información sobre el acceso y el uso de esta carpeta, vea SharedLocalFolder.
Puede almacenar los datos de la aplicación en formatos con versiones específicas de la aplicación. Para obtener más información, consulta Version y SetVersionAsync.
Para obtener más información sobre el uso de estas API, consulta Almacenar y recuperar la configuración y otros datos de la aplicación.
Propiedades
Current |
Proporciona acceso al almacén de datos de la aplicación asociado al paquete de la aplicación. |
LocalCacheFolder |
Obtiene la carpeta del almacén de datos de la aplicación local donde puede guardar archivos que no se incluyen en la copia de seguridad y restauración. |
LocalFolder |
Obtiene la carpeta raíz del almacén de datos de la aplicación local. Se realiza una copia de seguridad de esta carpeta en la nube. |
LocalSettings |
Obtiene el contenedor de configuración de la aplicación en el almacén de datos de la aplicación local. |
RoamingFolder |
Obtiene la carpeta raíz del almacén de datos de la aplicación móvil. |
RoamingSettings |
Obtiene el contenedor de configuración de la aplicación en el almacén de datos de la aplicación móvil. |
RoamingStorageQuota |
Obtiene el tamaño máximo de los datos que se pueden sincronizar con la nube desde el almacén de datos de la aplicación móvil. |
SharedLocalFolder |
Obtiene la carpeta raíz del almacén de datos de la aplicación compartida. |
TemporaryFolder |
Obtiene la carpeta raíz del almacén de datos de la aplicación temporal. |
Version |
Obtiene el número de versión de los datos de la aplicación en el almacén de datos de la aplicación. |
Métodos
ClearAsync() |
Quita todos los datos de la aplicación de los almacenes de datos de aplicaciones locales, móviles y temporales. Nota El método ClearAsync() encuentra un error si hay algún identificador de archivo abierto. Debe tener cuidado de cerrar todos los archivos abiertos antes de llamar a ClearAsync. |
ClearAsync(ApplicationDataLocality) |
Quita todos los datos de la aplicación del almacén de datos de la aplicación especificado. Nota El método ClearAsync(ApplicationDataLocality) encuentra un error si hay algún identificador de archivo abierto. Debe tener cuidado de cerrar todos los archivos abiertos antes de llamar a ClearAsync. |
ClearPublisherCacheFolderAsync(String) |
Borra los archivos y subcarpetas de la subcarpeta especificada de la carpeta de almacenamiento compartido para el publicador de la aplicación actual. |
Close() |
Nota Este miembro no se implementa en C#. |
Dispose() |
Realiza tareas definidas por la aplicación asociadas a la liberación o al restablecimiento de recursos no administrados. |
GetForUserAsync(User) |
Método estático que devuelve ApplicationData para un usuario. |
GetPublisherCacheFolder(String) |
Obtiene la subcarpeta especificada de la carpeta de almacenamiento compartido para el publicador de la aplicación actual. |
SetVersionAsync(UInt32, ApplicationDataSetVersionHandler) |
Establece el número de versión de los datos de la aplicación en el almacén de datos de la aplicación. |
SignalDataChanged() |
Envía un evento DataChanged a todos los controladores de eventos registrados. |
Eventos
DataChanged |
Se produce cuando se sincronizan los datos de la aplicación móvil. |
Se aplica a
Consulte también
- ApplicationDataCompositeValue
- ApplicationDataContainer
- ApplicationDataContainerSettings
- Almacenar y recuperar la configuración y otros datos de aplicación
- Directrices para datos de aplicaciones de itinerancia
- Directrices para la configuración de una aplicación
- Ejemplo de configuración de la aplicación (Windows 8.1, Windows Phone 8.1)
- Application data sample (ejemplo de datos de aplicaciones)