Ho una cartella in cui vengono copiati i file. Voglio guardarlo ed elaborare i file non appena vengono copiati nella directory. Sono in grado di rilevare quando un file si trova nella directory, tramite il polling (la mia attuale implementazione) o in alcuni test che utilizzano API di Windows da alcuni esempi che ho trovato online.C++ Directory Watching - Come rilevare la copia è terminata
Il problema è che rilevo quando il file viene creato per la prima volta e viene ancora copiato. Questo rende il mio programma, che ha bisogno di accedere al file, attraverso errori (perché il file non è ancora completo). Come posso rilevare non quando è iniziata la copia ma quando è terminata la copia? Sto usando C++ su Windows, quindi la risposta potrebbe dipendere dalla piattaforma ma, se possibile, preferirei che fosse indipendente dalla piattaforma.
Ho trovato questa domanda solo pochi minuti fa: http://stackoverflow.com/questions/559659/how-to-know-a-file-is-finished-copying E 'molto simile al mio problema, ma il "approvato "La soluzione è lontana dall'essere elegante e funzionale. – petersaints
Se il codice verrà eseguito in un contesto amministrativo, ad esempio, come servizio di sistema, è possibile utilizzare un giornale delle modifiche. Vedi http://msdn.microsoft.com/en-us/library/windows/desktop/aa363798%28v=vs.85%29.aspx –
Considerando la possibilità di cose come la copia ingenua usando 'fread()'/'fwrite() 'Non penso che ci sia una soluzione generale. Non abbastanza robusto, ma forse rintracciando maniglie aperte sui file? –