Imagine que deseo crear (o sobrescribir) el siguiente archivo: - C:\Temp\Bar\Foo\Test.txt
Usando el método File.Create (..) , esto puede hacerlo.
PERO, si no tengo ninguna de las siguientes carpetas (de esa ruta de ejemplo, arriba)
- Temperatura
- Bar
- Foo
entonces recibo una DirectoryNotFoundException lanzada.
Entonces ... dada una ruta, ¿cómo podemos crear recursivamente todas las carpetas necesarias para crear el archivo ... para esa ruta? Si existen carpetas Temp o Bar, pero Foo no ... entonces eso también se crea.
Para simplificar, supongamos que no hay problemas de seguridad: todos los permisos están bien, etc.
c#
.net
file-access
Pure.Krome
fuente
fuente
Respuestas:
Vea esta página de MSDN .
Espero que ayude!
fuente
Directory.CreateDirectory
sin elDirectory.Exists
cheque primero; no se lanzará si el directorio ya está allí.Path.GetDirectoryName(string path)
de obtener el directorio de su ruta completapath
no debe contener el nombre del archivo. Entonces, usar el ejemplo del OPpath
debería serC:\Temp\Bar\Foo
. Después de llamarDirectory.CreateDirectory(path);
, aún debe llamarFile.Create("C:\Temp\Bar\Foo\Test.txt");
para crear el archivo.Para resumir lo que se ha comentado en otras respuestas:
Directory.CreateDirectory
creará los directorios de forma recursiva y si el directorio ya existe, regresará sin un error.Si no ha pasado a ser un archivo
Foo
enC:\Temp\Bar\Foo
una excepción será lanzada.fuente
Use Directory.CreateDirectory antes de crear el archivo. Crea la carpeta recursivamente para ti.
fuente
Crea todos los directorios y subdirectorios según lo especificado por la ruta.
entonces puedes crear un archivo.
fuente
Deberá verificar ambas partes de la ruta (directorio y nombre de archivo) y crear cada una si no existe.
Use
File.Exists
yDirectory.Exists
para averiguar si existen.Directory.CreateDirectory
creará la ruta completa para usted, por lo que solo necesita llamarlo una vez si el directorio no existe, simplemente cree el archivo.fuente
Debe usar Directory.CreateDirectory.
http://msdn.microsoft.com/en-us/library/54a0at6s.aspx
fuente
Desea Directory.CreateDirectory ()
Aquí hay una clase que uso (convertida a C #) que si le pasa un directorio de origen y un destino, copiará todos los archivos y subcarpetas de ese directorio a su destino:
}
fuente
using Microsoft.VisualBasic;
¡Mal!Asumir que su ensamblado / exe tiene permiso de FileIO es en sí mismo, bueno, no está bien. Es posible que su aplicación no se ejecute con derechos de administrador. Es importante tener en cuenta la seguridad de acceso al código y solicitar permisos Código de muestra:
Comprender la seguridad de acceso al código .NET
¿Es "Code Access Security" de algún uso del mundo real?
fuente
Sé que hay otras respuestas aquí, pero ninguna de ellas no está lo suficientemente completa, el siguiente código creará directorios (si no existe) y luego copiará los archivos .
fuente