Java ist auch eine Insel

Samstag, Dezember 01, 2007

JNotify: Was tut sich im Dateisystem?

Die kleine (native) unter Linux und Windows arbeitende Bibliothek JNotify meldet Änderungen an Dateien. Ein Beispiel:

String path = "c:/";

int mask = JNotify.FILE_CREATED | JNotify.FILE_DELETED | JNotify.FILE_MODIFIED | JNotify.FILE_RENAMED;


boolean watchSubtree = true;


int watchID = JNotify.addWatch(path, mask, watchSubtree, new JNotifyListener()
{
@Override
public void fileCreated( int arg0, String arg1, String arg2 )
{
System.out.println( "created" );
}


@Override
public void fileDeleted( int arg0, String arg1, String arg2 )
{
System.out.println( "deleted" );
}

@Override
public void fileModified( int arg0, String arg1, String arg2 )
{
System.out.println( "modified" );
}

@Override
public void fileRenamed( int arg0, String arg1, String arg2, String arg3 )
{
System.out.println( "renamed" );
}
} );

Und am Ende:

JNotify.removeWatch(watchID);

Labels:

AddThis Social Bookmark Button

2 Comments:

  • Nachdem ich nun ein echtes Usaecase mit JNotify programmiert habe, fällt mir auf, dass die Bibliothek mehrere Änderungen (4x) an einer Datei meldet, auch wenn es nur eine Änderung gab. Man muss auch ein bisschen programmieren, da es für einige Dateisystemoperationen zwei Ereignisse gibt, die man dann filtern muss, möchte man Arbeit nicht doppelt machen.

    By Blogger Christian Ullenboom, at Dezember 05, 2007 9:17 AM  

  • Hallo, ich habe die Tage das erste Mal JNotify verwendet und leider schweigt sich die Doku über das konkrete Verhalten aus.

    Gerade muss ich mich mit einem merkwürdigen Verhalten rumärgern. Bei der Überwachung einer Datei und anschließendem Einlesen friert mein Prozess ein. Die von JNotify zu überwachende und nach Änderung zu öffnende Datei ist ein ZIP-Archiv. Wird die Datei geändert, wird der von mir implementierte JNotifyListener notifiziert, welcher wiederum eine Methode aufruft, die das angesprochene Archiv ausliest.
    Die aufgerufene Methode verrichtet leider nicht ihre Arbeit. Der Prozess bleibt stehen und es tut sich nichts mehr. Ich hatte gedacht, dass das mal eben schnell realisiert ist - doch Murphy ...

    Finde ich demnächst Zeit, werde ich mich mal auf die Suche nach einer Lösung machen und sie hier kundtun.

    Habt ihr ähnliche Probleme oder setzt ihr JNotify bereits erfolgreich ein? Falls ja, würden mich eure konkreten Anwendungsfälle interessieren.

    By Blogger Marcel, at Dezember 31, 2007 4:00 AM  

Kommentar veröffentlichen

<< Home