2012-03-11 12 views
8

Actualmente tengo el siguiente código en mi aplicación WPF que hace exactamente lo que quiero que haga, sin embargo, al publicar esto no necesariamente podrá acceder a estas ubicaciones de carpeta como no señalarán el directorio correcto ni las carpetas existirán.Carpeta para almacenar archivos de datos localmente en la aplicación WPF

Esperaba que alguien pudiera decirme cuál es la mejor manera de guardar algo en una carpeta local.

Ya sea que esté dentro de la carpeta de la aplicación o no, tampoco tiene ningún problema.

El código que estoy usando actualmente para la escritura del fichero:

using (Stream stream = File.Open(@"..\..\Templates\data.bin", FileMode.Create)) 
      { 
       BinaryFormatter bin = new BinaryFormatter(); 
       bin.Serialize(stream, templateList); 
      } 

El código que estoy usando actualmente para la carga del archivo:

using (Stream stream = File.Open(@"..\..\Templates\data.bin", FileMode.Open)) 
     { 
      BinaryFormatter bin = new BinaryFormatter(); 

      templateList = (List<Template>)bin.Deserialize(stream); 
     } 
+0

No estoy seguro de que tengo la pregunta correcta, tal vez [Almacenamiento Aislado] (http://msdn.microsoft.com /es-es/library/3ak841sy(v=vs.100).aspx) es lo que estás buscando? – sll

Respuesta

14

Usted puede utilizar el Medio Ambiente .SpecialFolder para encontrar un lugar apropiado para colocar archivos (por ejemplo, ApplicationData sería un buen lugar para comenzar). Si solo necesita un archivo temporal, puede usar Path.GetTempFileName para crear uno.

Editar: Una última nota. Almacenar cosas en la carpeta de la aplicación en sí puede ser un gran dolor. Por lo general, la carpeta de la aplicación se crea con la cuenta de administrador durante la instalación para que su aplicación no pueda escribir en ella mientras se ejecuta en una cuenta de usuario.

+0

Muchas gracias Matt. He usado Environment.SpecialFolder y simplemente realizo una simple comprobación si el directorio existe y si no crea las nuevas carpetas. ¡Todo listo! – Beerlol

7

Usted podría utilizar System.Environment.SpecialFolder.LocalApplicationData para almacenar datos de la aplicación específica:

using System; 

class Sample 
{ 
    public static void Main() 
    { 
      Console.WriteLine("GetFolderPath: {0}", 
       Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)); 
    } 
} 

Ref: http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

Cuestiones relacionadas