2010-09-28 12 views
8

En config de mi aplicación que he un camino, por ejemplo "logs \ actualizador \ updater.log"Crear un archivo de una ruta, crear subdirectorios si no existe

A partir de la aplicación, quiero crear el archivo updater.log, creando todas las subcarpetas si no existen.

Por lo tanto, si mañana mi usuario cambia la ruta en la configuración a "logs \ mypathisbetter \ updater.log", mi aplicación continúa funcionando, escribiendo el registro en el nuevo archivo.

File.Create, FileInfo.Create, Streamwriter.Create o así: they do that?

¿Debo verificar si existen carpetas antes?

No puedo encontrar una respuesta clara a esta pregunta en la red.

+0

http://msdn.microsoft.com/en-us/library/54a0at6s.aspx – skst

Respuesta

13

resuelven usando un poco de código:

private static void EnsureDirectoryExists(string filePath) 
{ 
    FileInfo fi = new FileInfo(filePath); 
    if (!fi.Directory.Exists) 
    { 
    System.IO.Directory.CreateDirectory(fi.DirectoryName); 
    } 
} 

Lo siento por este post muy novato ... Gracias a todos! :-)

+0

Su enfoque es bueno para modificar el guión –

9

No, no parecen, obtendrá una excepción DirectoryNotFoundException, creo que de las tres.

Primero tiene que hacer algo como un Directory.CreateDirectory(path).

EDITAR:

Por un poco más de una solución completa que comienza con una ruta que incluya el nombre del archivo, intente:

Directory.CreateDirectory(Path.GetDirectoryName(fullPath)); 

    TextWriter writer = new StreamWriter(fullPath); 
    writer.WriteLine("hello mum"); 
    writer.Close(); 

Pero hay que tener en cuenta que necesitará un poco de manipulación de error demasiado, para que el escritor siempre se cierre (en un bloque 'finalmente').

+0

De hecho, lo intenté también. ¿Hay una "Mejor Práctica" para hacer ese trabajo? Algunas ideas? :-) –

+0

Actualicé mi respuesta, ¿eso ayuda? –

+0

solucionado utilizando un poco de código: \t \t vacío CreateFile (rutaArchivo cadena) estática privada \t \t { \t \t \t FileInfo fi = new FileInfo (rutaArchivo); \t \t \t si \t \t \t { \t System.IO.Directory.CreateDirectory (fi.DirectoryName) (fi.Directory.Exists!); \t \t \t} \t \t} –

Cuestiones relacionadas