31 Temmuz 2018 Salı

WatchService Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.io.IOException;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
Bu sınıf yerine eskiden Apache Commons'tan VFS API kullanılırdı.
constructor
Şöyle yaparız.
WatchService watchService = FileSystems.getDefault().newWatchService();
Daha sonra Path.register() metodu ile izlemek istediğimiz şeyi belirtiriz.

Dosya yaratılmayı yakalamak için StandardWatchEventKinds.ENTRY_CREATE kullanılır. Dosyanın yaratılmış olması diğer uygulamanın yazmayı bitirdiği anlamına gelmez.

Dosyanın değiştirildiğimi yakalamak için StandardWatchEventKinds.ENTRY_MODIFY kullanılır. Belli bir süre değiştirilmeyen dosyaya diğer uygulamanın yazmayı bitirdiği varsayabilir.

Örnek
Dosya yaratılmayı yakalamak için StandardWatchEventKinds.ENTRY_CREATE kullanılır. Şöyle yaparız.
Path faxFolder = Paths.get("./faxFolder/");
WatchService watchService = ...;
faxFolder.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);
pollEvents metodu
Şöyle yaparız.
WatchService watchService = FileSystems.getDefault().newWatchService();
Path path = Paths.get(dirLocation);
path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,
 StandardWatchEventKinds.ENTRY_MODIFY,
 StandardWatchEventKinds.ENTRY_DELETE);
WatchKey key;

while ((key = watchService.take()) != null) {
  for (WatchEvent<?> event : key.pollEvents()) {
    if ("ENTRY_CREATE".equalsIgnoreCase(event.kind().name())) {
      // File reading here
    }
  }
}

Hiç yorum yok:

Yorum Gönder