Tra parentesi, non sto dicendo che non sia possibile farlo senza eliminare/spostare i file già elaborati. Sto dicendo che è inefficiente.
Se non hai i permessi di scrittura e non puoi farteli dare, allora puoi adottare una soluzione diversa:
1) Leggi il contenuto della directory.
2) Controlla se i file che hai letto li hai già elaborati (andando, ad esempio, a leggere il contenuto di una tabella di un DB)
3) Elabora quelli che sono "sopravvissuti" al controllo
4) Inserisci questi ultimi nella tabella del DB.
Spannometricamente:
codice:
Database db = ... // Una connessione al tuo database
...
File dirToWatch = new File( ... ); // La directory da monitorare
while( finchè_sai_tu ) {
File[] daElaborare = dirToWatch.listFiles( tuoFiltro );
for(File f : daElaborare) {
... // Elabora f
inserisciFileInDB( f );
}
}
...
// Il tuo filtro: una implementazione di FilenameFilter
public boolean accept(File dir, String name) {
boolean ret = true;
// Controlliamo se il file è presente nella tabella dei file già elaborati
ret = !db.controllaFile( name );
return ret;
}
Chiaramente il metodo "controllaFile()" farà una semplice query (SELECT) sul DB per verificare se il nome di file esiste nella tabella dei file già elaborati (nella mia testa tale metodo ritorna "true" se il file è presente nella tabella, per questo ho messo la negazione). Similmente, il metodo "inserisciFileInDB()" effettuerà una query per inserire il nome del file nella tabella di cui sopra.
Considerazione: questa soluzione funziona solo se i files hanno tutti nomi diversi, nel senso che non funziona se un file viene sovrascritto.
Ciao.