Necesito copiar 1 archivo en especifico yo lo selecciono y obtengo la ruta de el así c:\escritorio\carpeta\archivo.doc
pero eh estado intentando de copiarlo algo así
string nombrecar = "C:\\carpeta\otracar\guardaaqui";//guardaaqui es la carpeta que creara
if (!(Directory.Exists(nombrecar)))
{
Directory.CreateDirectory(nombrecar);
FileInfo file = new FileInfo(c:\escritorio\carpeta\archivo.doc);
file.CopyTo(nombrecar + "\\" + "archivo.doc");
}
solo crea la carpeta el archivo no lo copea
No se si sera un typo cuando copiaste el codigo pero en esta linea:
FileInfo file = new FileInfo(c:\escritorio\carpeta\archivo.doc);
La ruta del fichero es una cadena asi que necesitas usar ""
FileInfo file = new FileInfo(@"c:\escritorio\carpeta\archivo.doc");
Edit:
1- Olvide mencionar que en tu logica si existe la carpeta con anterioridad no se copiaria el fichero. Si no es el comportamiento que deseas necesitas modificar tus {}
2- Cuando trabajes con ficheros es siempre recomendable usar un manejador de excepciones
string nombrecar = @"c:\carpeta\otracar\guardaaqui";
string nombrearchivo = @"c:\escritorio\carpeta\archivo.doc";
try
{
if (!(Directory.Exists(nombrecar)))
Directory.CreateDirectory(nombrecar);
FileInfo file = new FileInfo(nombrearchivo);
if (file.Exists)
file.CopyTo(nombrecar + "\\" + file.Name, true);
}
catch
MessageBox.Show("Error copiando fichero!");
No es necesario usar la clase FileInfo a menos que quieras representar la información de un archivo en la interfaz gráfica, o acceder a dicha información para otros usos, en cuyo caso también sería conveniente usar la clase DirectoryInfo en vez de mezclar declaraciones de tipo string con instancias de la clase FileInfo...
// Source file.
FileInfo srcFile = new FileInfo(@"C:\Archivo.ext");
// Destination directory.
DirectoryInfo dstDir = new DirectoryInfo(@"C:\Directorio\");
// Destination file.
FileInfo dstFile = new FileInfo(Path.Combine(dstDir.FullName, srcFile.Name));
try {
dstDir.Create();
srcFile.CopyTo(dstFile.FullName);
} catch (Exception ex) {
throw;
}
Si por lo contrario tu única intención es usar el método FileInfo.CopyTo(), crear una instancia de la clase FileInfo como ya dije es completamente inadecuado e innecesario. En su lugar puedes usar el método System.IO.File.Copy()...
// Source file path.
string srcFilePath = @"C:\Archivo.ext";
// Destination directory path.
string dstDirPath = @"C:\Directorio\";
// Destination file path.
string dstFilePath = Path.Combine(dstDirPath, Path.GetFileName(srcFilePath));
try {
Directory.CreateDirectory(dstDirPath);
File.Copy(srcFilePath, dstFilePath, overwrite:false);
} catch (Exception ex) {
throw;
}
Nótese que no es necesario comprobar si el directorio existe o no, de eso ya se encarga el método DirectoryInfo.Create() o Directory.CreateDirectory(), los cuales no lanzarán ninguna excepción si el directorio ya fue creado con anterioridad.
Saludos.