Modo efficiente per verificare la presenza di modifiche al contenuto delle cartelle

2

Sto creando un'applicazione che mantiene un database di file di un certo tipo in una determinata cartella (e tutte le sottocartelle) Inizialmente il programma reciterà le cartelle e aggiungerà qualsiasi file trovato di quel tipo nel database.

Voglio che l'applicazione abbia la possibilità di rieseguire la scansione della cartella e aggiungere tutti i file che non erano presenti l'ultima volta in cui sono state scansionate le cartelle.

Non può utilizzare la proprietà data data del file perché c'è un'alta probabilità che un file venga aggiunto alle cartelle che non è un nuovo file.

Mi chiedo quale sia il modo più efficiente per farlo, e se c'è un modo che non implica il controllo di ogni file è già nel database (il che, se ci sono 5000 file significherebbe 5000 query di un elenco 5000 articoli in grandezza, o 25 milioni di "assegni" per il motore sql da eseguire)

Suppongo che una domanda più specifica per raggiungere lo stesso obiettivo sia - esiste una proprietà di un file (in Microsoft Windows) che ti dirà in modo affidabile quando quel file è arrivato in quella cartella.

Modifica: l'app non verrà eseguita continuamente, pertanto il monitoraggio della cartella per gli eventi di modifica non è un'opzione. Uno scenario tipico potrebbe essere. Esegui l'app. ottieni nuovi file. chiudi l'app. Una settimana dopo (dopo l'uso normale del computer e i file aggiunti alla cartella) esegui nuovamente l'app, cerca le modifiche dall'ultima volta che l'app è stata utilizzata.

    
posta MrVimes 30.11.2012 - 17:10
fonte

1 risposta

1

Guardando il tuo profilo su StackOverflow, sembra che tu sia (o fossi) uno sviluppatore C ++ Builder, quindi suggerisco di usare l'API Shell per ricevere notifiche delle modifiche su una determinata cartella. Se segui questo percorso, creare un servizio simile a un servizio (o anche un vero servizio Windows) sarebbe il mio percorso.

Modifica: un altro modo è ottenere un "hash" / "firma" calcolato dal nome dei file e qualche altro attributo. Quindi lo calcoli ogni volta che esegui la scansione e lo confronti con uno salvato sul DB.

    
risposta data 30.11.2012 - 17:55
fonte

Leggi altre domande sui tag