Domanda

per un recente progetto ho bisogno di rilevare le modifiche del file system su una condivisione Samba mappata da Java su Windows: crea, aggiorna e rimuove. Al momento sto utilizzando un sondaggio cartella che mantiene un elenco dei file e la loro timestamp modificato per cercare gli eventi.

Ma il mio problema è che questa cartella sondaggio fa capolino solo nella cartella in certi momenti (ogni 10 secondi, per esempio), quindi un file aggiornato può essere aggiornato due volte tra due sondaggi senza riconoscere.

C'è un modo per ottenere gli eventi da finestre all'interno di Java ogni volta che un evento occours file a che mappep Samba parte?

Grazie!

È stato utile?

Soluzione

Java non ha nulla nella corrente api IO per trattare con le notifiche di file dal O / S.

Java 7 avrà un nuovo API IO JSR-203 che ha una orologio di file API che o l'uso nativo o / S notifiche o polling se le notifiche non sono supportato per rilevare i cambiamenti dei file.

Nel frattempo si poteva guardare per vedere se qualcuno ha implementato una libreria che permette di collegare in O / S notifiche tramite JNI. Io penso che IntelliJ IDEA utilizza un lib nativo per questo scopo.

Guardando su Sourceforge ho trovato jfilenotify , ma i' ho mai usato.

In alternativa si potrebbe aumentare la frequenza di campionamento (ma questo inizia a martellare il filesystem) o cambiare il modo i file sono scritti con l'aggiunta di un numero di versione per il nome del file / cartella in modo che si può facilmente dire quando qualcosa è cambiato.

Altri suggerimenti

questa voce forum TeamDev JNIWrapper è capace di fare questo, come lo voglio. Ho appena acquistato una copia. Grazie e

Greetz, Ghad

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top