Tengo un pedazo de código que se rompe si el directorio no existe:

System.IO.File.WriteAllText(filePath, content);

En una línea (o un par de líneas), es posible comprobar si el directorio principal para el nuevo archivo no existe y si no, a crear antes de crear el archivo nuevo?

Estoy usando .NET 3.5.

InformationsquelleAutor Diskdrive | 2010-06-02

5 Comentarios

  1. 359

    Para Crear

    (new FileInfo(filePath)).Directory.Create() Antes de escribir en el archivo.

    ….O, Si existe, crear (otra cosa no hacer nada)

    System.IO.FileInfo file = new System.IO.FileInfo(filePath);
    file.Directory.Create(); //If the directory already exists, this method does nothing.
    System.IO.File.WriteAllText(file.FullName, content);
    • Solución elegante como maneja las situaciones que requieren la creación de carpetas anidadas.
    • Gracias! Vi stackoverflow.com/questions/9065598, pero yo quería empezar con la ruta de acceso absoluta a un archivo, y no quería lidiar con la división de la ruta. Ahora, yo sé que usted puede tener acceso al Directorio de la instancia de FileInfo.
    • Hay un async manera de hacer esto?
    • Supongo que se podría hacer con Task.Run(() => );.
  2. 102

    Puede utilizar el siguiente código

      DirectoryInfo di = Directory.CreateDirectory(path);
    • Directory.CreateDirectory hace exactamente lo que usted desea: crea el directorio si no existe todavía. no Hay necesidad de hacer explícito comprobar, en primer lugar.
    • Lanza una IOException si path es un archivo y no un directorio. msdn.microsoft.com/en-us/library/54a0at6s(v=vs 110).aspx
  3. 30

    Como @hitec dijo, usted tiene que asegurarse de que tiene los permisos correctos, si usted lo hace, usted puede utilizar esta línea para asegurar la existencia del directorio:

    Directory.CreateDirectory(Path.GetDirectoryName(filePath))

  4. -1

    Puede utilizar Archivo.Existe para comprobar si existe el archivo y crear utilizando Archivo.Crear si es necesario. Asegúrese de que usted compruebe si tiene acceso a crear archivos en esa ubicación.

    Una vez que esté seguro de que el archivo existe, se puede escribir en él de forma segura. A pesar de que como medida de precaución, usted debe poner su código en un bloque try…catch y captura de las excepciones que la función es probable que plantear si las cosas no salen exactamente como estaba previsto.

    Información adicional para el archivo básico de e/S conceptos.

    • Inicialmente había leído mal tu pregunta que quería escribir en un archivo que no existe. Los conceptos son esencialmente la misma para el Archivo y el Directorio de IO, aunque.
  5. -2

    var filePath = context.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["ErrorLogFile"]));

    var file = new FileInfo(filePath);

    file.Directory.Create(); Si el directorio ya existe, este método no hace nada.

    var sw = new StreamWriter(filePath, true);

    sw.WriteLine(Enter your message here);

    sw.Close();

Dejar respuesta

Please enter your comment!
Please enter your name here