Tengo un hilo que sondea una carpeta para nuevos archivos. El problema es que ve un archivo nuevo y comienza a trabajar en él incluso antes de que el archivo haya sido completamente copiado por otro proceso. Debido a esto, el sondeador obtiene el archivo utilizado por otro error de proceso.¿Cómo esperar a que se copie por completo un archivo?
¿Hay alguna manera de comprobar si el archivo es libre de usar o recibir notificaciones? Ciertamente podemos usar el código de manejo de excepciones, pero ¿hay una mejor manera?
Tech: 2.0 de .NET/C#
Actualización:
Enterado de otras respuestas que si tenemos acceso a la aplicación de escribir el archivo a continuación, un mejor diseño es comenzar con alguna otra extensión .tmp y luego cambiarle el nombre después de copiar.
El FileStream.Lock se podría utilizar si no controlamos la aplicación de origen
Ver http://stackoverflow.com/questions/750471/how-to-know-whether-a-file-copying-is-in-progress-complete-in-java-1-6/750521#750521 para algunas respuestas generales. Puede haber algo mejor para una plataforma específica (es decir, Windows .NET), pero la respuesta mencionada anteriormente tiene dos soluciones generales al problema. – paxdiablo