03/10/2025 - SpiritoLibero ha scritto:
Veramente la classe DiskShare possiede proprio il metodo fileExists( filePath ) che ritorna true se il percorso passato come parametro (filePath) esiste.
Il metodo lastModified() esiste per la classe java.io.File, non per la gestione SMBJ: gli oggetti di tipo FileIdBothDirectoryInformation possiedono il metodo getChangeTime() che ritorna un FileTime il quale possiede il metodo toEpochMillis() che ritorna la data di ultima modifica in millisecondi (equivalente a lastModified())
Si scusa mi sono espresso male.
Ho visto che la DiskShare ha il metodo fileExists ma non ha un metodo per ricavare la data di ultima modifica del file, cosa per me è fondamentale, perché lo scopo di tutto il programma è proprio quello di eseguire il backup dei soli file modificati di recente rispetto all'ultimo backup.
Ecco perché uso FileIdBothDirectoryInformation per usare il getChangeTime.
Ma per questo devo fare il famoso ciclo:
for (FileIdBothDirectoryInformation f : share.list("Directory", "*")) {
che mi va a scandire le migliaia di file contenute nella "Directory"!
E allora mi sono inventato un algoritmo che inizia scorrendo una sola volta la share.list per confrontare le date delle cartelle di destinazione con quelle delle cartelle di origine e poi restano da copiare solo i file nuovi presenti all'origine. Per cui la cosa si è complicata un tantino ma funziona.
Quello che non funziona è che il test di cui sopra sembra non funzionare sempre, perché certi file me li copia ugualmente anche se non hanno variato la data di ultima modifica, ovvero il test sulle variabili lOrigTime e lDestTime sembra funzionare in modo casuale.
Direi che devi postare un po' più di codice per capire cosa sta andando male...
Eh, non è così semplice, perché uso molte mie librerie, per cui dovrei postare dei sorgenti lunghissimi.
Devo create un esempio ridotto all'osso, che non faccia uso delle mie librerie, ma richiede tempo.
Se però conosci un modo alternativo al FileIdBothDirectoryInformation per ricavare la data di ultima modifica dei file, per favore fammelo sapere, che magari mi bypassa il problema. ;-)