Domanda

Ho appena visto una caratteristica impressionante con Java 7, l'osservatore directory. E ti dirà quando qualcosa è cambiato in una directory senza il polling della directory.

1). Ma si dice che ricade polling se il filesystem non supporta la registrazione per gli eventi di modifica. Fare tutti i filesystem tipica Linux e Windows (extX, NTFS, reiserXXX, JSF, ZFS) supportano questa funzione?

2.) È Rinominare un file all'interno di una directory di creare o di un evento di modifica? O è che uno di eliminazione e uno creare? Posso provarlo su un sistema, ma sarà poi essere lo stesso per tutti i file system?

È stato utile?

Soluzione

Sembra che si sta parlando di WatchService .

La formulazione della ENTRY_CREATE evento dice che una nuova voce sarebbe stato percepito se un nuovo file viene creato o un file viene rinominato nella directory. Manca specificazione di quali eventi vengono licenziati se un file viene rinominato e rimane nella stessa directory.

La formulazione precisa inoltre che se il servizio è basato sul sistema operativo o di polling è a carico di attuazione. Ho il sospetto che sia attuazione da parte della JRE, quindi, anche se si conosce un particolare supporto del sistema operativo che, non è una garanzia che il servizio utilizzerà la funzionalità a livello di sistema operativo o ricorrere al polling. In realtà, il servizio non prevede alcun modo per dire se sta usando polling o una funzione a livello di sistema operativo a tutti.

Le operazioni API definiscono, inoltre, non si comportano come un ascoltatore. Il WatchService fa fare osservazione automatico, ma di acquisire l'elenco degli eventi che si verificano, si devono ancora richiedere manualmente gli eventi visti dal servizio. Essa non sembra fornire alcun ganci per automaticamente richiamate quando un nuovo evento è presente.

Altri suggerimenti

Se si gioca con esso su Windows e su Linux, vedrete un sacco di differenze di comportamento. Quindi Java in realtà non tenta di fornire una piattaforma coerente astrazione indipendente. È necessario testare la tua app sui sistemi operativi che ti interessano (o meglio, ci sono solo 2).

WatchService succhia più di quanto si possa immaginare. Prepararsi per le frustrazioni se davvero immergersi in esso.

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