2013-04-08 7 views

Répondre

2

Ce code montre un répertoire pour le fichier ajouté, supprimé ou modifié:

Path testDirectory = Files.createTempDirectory(getClass().getName()); 
WatchService watcher = FileSystems.getDefault().newWatchService(); 
testDirectory.register(watcher, 
    StandardWatchEventKinds.ENTRY_CREATE, 
    StandardWatchEventKinds.ENTRY_MODIFY, 
    StandardWatchEventKinds.ENTRY_DELETE); 
for(;;) { 
    WatchKey key = watcher.take(); 
    log("key = watcher.take()"); 
    if(key.isValid()) { 
     log("key.isValid()"); 
     List< WatchEvent<?>> lst = key.pollEvents(); 
     for(WatchEvent<?> e : lst) { 
     log("WatchEvent polled: " + e.kind() + ": " + e.context()); 
     if(e.kind() == StandardWatchEventKinds.ENTRY_CREATE) { 
      Path path = (Path)e.context(); 
      File file = path.toFile(); 
      addFile(new File(testDirectory.toFile(), file.getPath())); 
     } 
     else if(e.kind() == StandardWatchEventKinds.ENTRY_DELETE) { 
      Path path = (Path)e.context(); 
      File file = path.toFile(); 
      removeFile(new File(testDirectory.toFile(), file.getPath())); 
     } 
     } 
     key.reset(); 
    } 
} 

Les classes impliquées dans ce code sont les suivants:

This part of the io tutorial montre plus et explique les motivations de cette API.

0

This est un tutoriel Java du désiré. java.nio.file package fournit une API de notification de modification de fichier, appelée l'API Watch Service. Cette API vous permet d'enregistrer un ou plusieurs répertoires avec le service de surveillance. Lors de l'inscription, vous indiquez au service les types d'événements qui vous intéressent: création de fichier, suppression de fichier ou modification de fichier

Plus d'informations à ce sujet here.

+0

Je ne voulais pas avoir cet observateur pour pas un seul répertoire ou une liste de répertoires. Je veux un auditeur pour l'ensemble du système, partout où le travail de collage est effectué. –

Questions connexes