Tengo una carpeta en la que se copian los archivos. Quiero verlo y procesar archivos tan pronto como se copien en el directorio. Puedo detectar cuando un archivo está en el directorio, ya sea a través de sondeo (mi implementación actual) o en algunas pruebas que usan API de Windows a partir de algunas muestras que he encontrado en línea.Observación de C++ Directory - Cómo detectar que la copia ha finalizado
El problema es que detecto cuando el archivo se crea por primera vez y aún se está copiando. Esto hace que mi programa, que necesita acceder al archivo, a través de errores (porque el archivo aún no está completo). ¿Cómo puedo detectar no cuándo comenzó la copia sino cuándo terminó la copia? Estoy usando C++ en Windows, por lo que la respuesta puede depender de la plataforma, pero, de ser posible, preferiría que sea independiente de la plataforma.
Encontré esta pregunta hace unos minutos: http://stackoverflow.com/questions/559659/how-to-know-a-file-is-finished-copying Es muy similar a mi problema, pero el "aprobado "La solución está lejos de ser elegante y funcional. – petersaints
Si su código se ejecutará en un contexto administrativo, es decir, como un servicio del sistema, podría usar un diario de cambios. Consulte http://msdn.microsoft.com/en-us/library/windows/desktop/aa363798%28v=vs.85%29.aspx –
Teniendo en cuenta la posibilidad de cosas como la copia ingenua usando 'fread()'/'fwrite() 'no creo que haya una solución general. No es bastante robusto, pero tal vez mediante el seguimiento de manijas abiertas a los archivos? –