Hi Max,

vielleicht sollte ich mal meine Anforderung noch ein wenig genauer
formulieren. Ich hatte in der ersten Mail etwas von der .net Klasse
FileSystemWatcher gesagt. Diese ist in der Lage ganze Verzeichnisbäume
zu überwachen und entsprechende Änderungen in einem "gewatchten" ;-)
Verzeichnis oder dessen Unterverzeichnisse zu registrieren (File Filter,
Events Typen und so weiter können zuvor auch festgelegt werden).

Das selbige möchte ich nun auch für Linux und das dann in Java verwenden.
FAM registriert nur Änderungen in einem Verzeichnis bzw. File.

Die Java Klasse ist zwar nicht verkehrt, aber nicht genau das was ich
gerne hätte, da ich mich dann um den Status eines jeden Files selbst zu
kümmern hätte. Das möchte ich aber gerne dem OS überlassen und nur auf
entsprechnde Events des OS reagieren oder so...

Eine Sache die ich gefunden habe ist das Commons VFS aus dem Jakarta
Commons Project. http://jakarta.apache.org/commons/sandbox/vfs/index.html

Das scheint sowas zu können, muss ich aber noch genauer unter die Lupe
nehmen.


Gruß
Patrick


Max Trense schrieb:
> Am Montag 11 April 2005 08:40 schrieb Patrick Schulz:
> 
>>Irgendwie muss das doch gehen. Sogar der Konqueror macht das ganze
>>scheinbar ohne besonderes Zutun.
>>Weiß jemand noch ein paar andere Lösungen?
> 
> 
> Wie schon gesagt ;-) KDE verwendet FAM um das aktuelle Verzeichnis jeder 
> Anwendung zu überwachen. Wenn Du das aktuelle Verzeichnis wechselst, dann 
> kannst Du das ja auch manuell abfragen. Deswegen ist die FAM-Lösung, basiert 
> glaube ich auf den Timestamps der beteiligten Inodes, auch vermutlich das 
> geschickteste.
> Auf Java wird sowas in absehbarer Zeit wohl nicht portiert ;-)
> 
> Das Feature sollte aber nicht allzu schwer zu simulieren sein. Zumindest 
> unter 
> Linux solltest Du Dich auf File.lastModified() verlassen können.
> 
> FileWatcher.java:
> 
> class FileWatcher implements Runnable {
>   public FileWatcher(File f) {
>     watch = f;
>   }
>   public void run() {
>     while (! stop) {
>       if (watch.lastModified() > lastModified) {
>         // notify listeners
>       }
>       Thread.sleep(100);
>     }
>   }
>   public void addFileChangeListener(FileChangeListener fcl) {
>     // add a listener
>   }
>   public void stopWatching() {
>     stop = true;
>   }
>   private File watch;
>   private long lastModified;
>   private boolean stop;
> }
> 
> Entschuldige eventuelle Fehler ;-) Ich hab das gerade so aus dem Handgelenk 
> programmiert. Die Klasse kannst Du auch ganz einfach erweitern, so dass sie 
> mehrere Dateien überwacht.
> 
> Max
> 
> 
> 

-- 
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an