2010-02-04 844 views
5

Estoy creando un archivo usando File.WriteAllText y copiando el mismo archivo a otro directorio usando el método File.Copy. Pero por alguna razón, no crea un archivo en el directorio de origen, pero lo copia al directorio de destino.Problema File.WriteAllText y File.Copy

¿Cuál podría ser el problema? Por favor hagamelo saber.

File.WriteAllText(sourceFilePath, Contents.ToString()); 
File.Copy(sourceFilePath, destFilePath); 
+0

¿Este comportamiento es coherente con otras rutas? –

Respuesta

0

¿Las llamadas al método son concurrentes según su ejemplo?

Si es así, puede llamar a File.WriteAllText dos veces para eludir el problema, aunque no sé por qué está ocurriendo.

Puede hacer una comprobación de File.Exists antes de la copia, o tal vez probar un Thread.Sleep (100) y ver que es un problema de tipo de E/S de disco.

7

Bueno, ya sabes que el archivo realmente se creó, de lo contrario, File.Copy() arroja una excepción. Y File.Copy() nunca elimina el archivo de origen, como lo hace File.Move().

La explicación más simple es que el archivo acaba de crearse en una carpeta que no esperaba. Lo cual es común si sourceFilePath no es una ruta absoluta. Esto sucede comúnmente cuando usa OpenFileDialog con su propiedad RestoreDirectory establecida en false. Por ejemplo.

Evita esto siempre usando rutas absolutas. Environment.GetFolderPath() es tu amigo.

+0

Creó un archivo esta vez pero está escribiendo los contenidos anteriores en el archivo de texto. File.Copy funciona bien con el directorio destinaton. – nav100

+0

¿Está escribiendo contenido antiguo? ¿O estás mirando una versión anterior del archivo? Más evidencia de que está creando el archivo en un directorio diferente. –

0

¿En qué carpeta está escribiendo? ¿Podría tratarse de un problema de virtualización de carpetas de Vista/7?

Si pudiera mostrarnos el código real que está utilizando, sería útil.