2012-05-12 17 views
17

Estoy desarrollando un pequeño juego de C# Winforms y una de las cosas que quiero hacer es guardar datos específicos de la aplicación. Sin embargo, estoy luchando un poco para entender el lugar correcto en el que se debe almacenar.¿Dónde está el lugar correcto para almacenar mis datos específicos de la aplicación?

Por lo que yo puedo ver que hay varios tipos de datos de una aplicación podría almacenar y en consecuencia diferentes lugares para que se llevará a cabo:

1. Propiedades de la aplicación - Los ajustes como en las tiendas de aplicaciones es datos, quién fue el último usuario que inició sesión, el tamaño predeterminado de la ventana, la posición, etc. ¿Se supone que esta información debe entrar en la configuración de la aplicación o quizás en el registro?

2. Los datos de aplicación global - Esto podría incluir sprites y otros activos del juego que son utilizados por cada usuario que ejecuta la aplicación en este equipo. ¿Dónde se almacenaría esta información común? Vale la pena señalar que en mi caso particular, estos datos no se proporcionarán con una instalación predeterminada y los usuarios podrán agregar sus propios recursos del juego que luego deberían estar disponibles para cualquier otro usuario en la misma computadora. los datos específicos de la aplicación

3. El usuario - Esto incluiría una usuarios guardados los archivos del juego, sus preferencias específicas de la aplicación y su información de perfil. ¿Dónde debería estar almacenando esto?

Idealmente, deseo que mi aplicación sea compatible con Windows XP, Vista, 7 y, por supuesto, la próxima versión de Windows 8. No sé si esto cambiará los métodos, pero espero que sirva de ayuda en el asesoramiento.

Esta es mi primera incursión en este tipo de desarrollo y agradecería algunos consejos de "mejores prácticas".

Respuesta

13

Pregunta 2:
se sugiere emplear una subcarpeta en Environment.SpecialFolder.CommonAppData (mapas a C:\ProgramData en Windows 7 por defecto). Esta es una carpeta oculta.

Pregunta 3:
Coloque esos archivos en Environment.SpecialFolder.AppData (mapas de C:\Users\[USERNAME]\AppData\Roaming por defecto, carpeta oculta), si se espera que el usuario no tiene intención de copia de seguridad/modificar los. Algunos juegos también ponen sus juegos guardados en Environment.SpecialFolder.MyDocuments, probablemente porque es más fácil para los usuarios encontrarlos allí.

código

Ejemplo:

var directory = Environment.GetFolderPath(Environment.SpecialFolder.AppData); 


using (FileStream fs = File.Create(Path.Combine(directory, "myAppDirectory", "myFile.txt")) 
{ 
    // write data    
} 

Para una complete list of special folders on Windows siga el vínculo

Notas al margen

+0

Algunos buenos consejos. Edité mi pregunta para indicar que los archivos en la pregunta 2 de hecho pueden ser dinámicos. – Martin

+0

@Martin He actualizado mi respuesta después de volver a leer su pregunta – yas4891

+0

Gracias - muy útil. – Martin

1

¿Por qué no guarda los datos en un objeto y los escribe en un archivo?Usa diferentes archivos para cada tipo.

+1

Eso es exactamente lo que estoy haciendo - Solo necesito conocer la mejor ubicación física en el disco para almacenarlos. – Martin

Cuestiones relacionadas