2009-03-09 28 views
19

Muchas veces conseguimos un error, al intentar escribir el archivo en la plataforma Windows,de archivo usado por otro proceso

"El proceso no puede acceder al 'XXX' archivo porque está siendo utilizado por otro proceso."

¿Cómo registrar C#, antes de escribir en un archivo que no está siendo utilizado por otro proceso?

Respuesta

13

Puede no, básicamente - usted tiene que intentar abrir el archivo para escritura, y si se obtiene una excepción no puede escribir en él :(

Incluso si pudiera hacer una comprobación por separado primero, el resultado no estaría actualizado antes de que pueda comenzar a escribir; aún así podría terminar con la excepción más adelante.

Sería bueno si el marco proporciona un método TryOpen, es cierto ...

+0

+1 lo uso en mis tandas nocturnas y funciona, no es elegante, pero funciona. – systempuntoout

1

trate de poner el comando se abre en una sentencia try-catch. Si el archivo se está utilizando, se lanzará IOException.

2

Simplemente tiene que probar abrir con el acceso compartido que desea, y manejar el error que se produce.

Nota: A veces, el archivo no se abre simplemente porque los derechos de uso compartido de archivos que ha especificado entran en conflicto con los derechos de uso compartido de archivos con los que alguien ya abrió el archivo.

Please see my answer here for more information.

0

Intente cambiar el nombre del archivo si puede cambiar el nombre, entonces se confirma que ningún otro proceso está accediendo a ese archivo. Finalmente, asegúrese de haber cambiado el nombre del mismo archivo en la misma carpeta.

6

Debe close a su archivo después de usarlo en su código:

FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read); //file is opened 
//you use the file here 
file.Close(); //then you must to close the file 
+1

Resolvió mi problema. Olvidé cerrarlo Colocado en el encabezado de un 'using (...) {...}' y bueno para ir – Jcorretjer

Cuestiones relacionadas