2 Stimmen

Wie kann man Änderungen in Dateien und Unterordnern eines Hauptordners abrufen?

Ich versuche, die Änderungen in einer Datei oder in einem Unterordner eines Ordners zu behandeln und sie dann per FTP hochzuladen (wie ein synchronisierter Ordner), aber ich habe keine Ahnung, wie es zu tun jemand könnte mir Hinweise geben oder wo zu finden/zu lernen, um es zu machen? Id lieber tun es in Java.

Danke!

4voto

LaGrandMere Punkte 10177

Überwachung von Änderungen in einem Verzeichnis

Auszug aus diesem Lernprogramm :

Erstellen eines Überwachungsdienstes und Registrierung für Ereignisse

Der erste Schritt besteht darin, einen neuen WatchService zu erstellen, indem Sie die Methode newWatchService in der Klasse FileSystem wie folgt verwenden:

WatchService watcher = FileSystems.getDefault().newWatchService();

Als Nächstes registrieren Sie ein oder mehrere Objekte mit dem Überwachungsdienst. Jedes Objekt, das die Schnittstelle Watchable implementiert, kann registriert werden. Die Path-Klasse implementiert die Watchable-Schnittstelle, so dass jedes zu überwachende Verzeichnis als Path-Objekt registriert wird.

Wie bei jedem Watchable implementiert die Klasse Path zwei Registrierungsmethoden. Diese Seite verwendet die Version mit zwei Argumenten, register(WatchService, WatchEvent.Kind...). (Die Version mit drei Argumenten benötigt einen WatchEvent.Modifier, der derzeit nicht implementiert ist).

Bei der Registrierung eines Objekts mit dem Überwachungsdienst geben Sie die Arten von Ereignissen an, die Sie überwachen möchten. Es folgen die unterstützten StandardWatchEventKinds-Ereignistypen:

ENTRY_CREATE – A directory entry is created.
ENTRY_DELETE – A directory entry is deleted.
ENTRY_MODIFY – A directory entry is modified.
OVERFLOW – Indicates that events might have been lost or discarded. You do not have to register for the OVERFLOW event to receive it.

Das folgende Codeschnipsel zeigt, wie man eine Pfadinstanz für alle drei Ereignistypen registriert:

import static java.nio.file.StandardWatchEventKinds.*;

Path dir = ...;
try {
    WatchKey key = dir.register(watcher,
                           ENTRY_CREATE,
                           ENTRY_DELETE,
                           ENTRY_MODIFY);
} catch (IOException x) {
    System.err.println(x);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X