Dateizugriff mitbekommen - file change event

Status
Nicht offen für weitere Antworten.

Q-Base

Aktives Mitglied
Hallo,

kennt jemand eine Bibliothek oder eine Java API, bei der ich ein Listener werde und immer per Event informiert werde, wenn die Datei geändert, sprich geschrieben wurde?

Momentan lese ich die Datei alle 0,2 Sekunden ein. Das erzeugt eine Last und garantiert noch nicht, dass die Daten, die ich halte, auch aktuell sind.

Ciao, Q
 

der JoJo

Bekanntes Mitglied
auf basis eines eclipse plugins könnte das gehen, aber ich glaube normalerweise kann man keine dateisystem listener erstellen (Platformunabhängigkeit und so)
 

20mithrandir

Aktives Mitglied
Normalerweise wird so eine Datei auch nicht immer neu eingelesen (naja, kommt auf die Größe an), sondern Zeitstempel und Dateigrösse auf Änderung verglichen. Also einfach diese Stati merken und schon bekommt man für die meisten Fälle eine Änderung gut mit. Oder seh' ich das zu simpel?
 

20mithrandir

Aktives Mitglied
Also das hier geht bei mir:

Code:
public static void main( String[] args )
{
	File f = new File( "testfile" );		
	long lastModified = Long.MIN_VALUE;
	long lastSize = Long.MIN_VALUE;
		
	if ( f.exists() == false )
	{
		try
		{
			f.createNewFile();
		}
		catch( IOException e )
		{
			e.printStackTrace();
		}
		lastModified = f.lastModified();
		lastSize = f.getTotalSpace();			
	}
		
	f = null;
		
	while( true )
	{
		f = new File( "testfile" );
			
		if ( lastModified != f.lastModified() )
		{
			System.out.println( "Zeitstempel modifiziert!" );
		}
		else if ( lastSize != f.getTotalSpace() )
		{
			System.out.println( "Groesse modifizert!" );
		}
		
		lastModified = f.lastModified();
		lastSize = f.getTotalSpace();
			
		try
		{
			Thread.sleep( 200 );
		}
		catch( InterruptedException e )
		{
			e.printStackTrace();
		}
	}
}

Natürlich nicht ganz ausgereift, aber immerhin ein Anfang...
 

Q-Base

Aktives Mitglied
ich möchte genau von 'Thread.sleep( 200 );' oder sowas weg.

Das erzeugt Last. Es gibt hier mehrere Prozesse, die auf diese Datei zugreifen - schreibend. Und einer lesend. Ein Listener wäre gut, weil das dann eine zentrale Instanz ist, nämlich die Java-VM, die da einfach einen Handle drauf hat.

Ciao, Q
 

20mithrandir

Aktives Mitglied
Und was glaubst du macht ein Listener-Konzept, wenn nicht implizit selbst pollen?

Ein sleep erzeugt jedenfalls bei mir keine Last, ganz im Gegenteil ; - )
 

20mithrandir

Aktives Mitglied
Das erscheint mir mit der nativen Implementierung sicher deutlich performanter zu sein, als alles in plain Java... Ist halt dann nicht ganz os-unabhängig.
 

Murray

Top Contributor
Wenn alle "Prozesse", die die Datei lesen und schreiben, in einer VM laufen, dann könntest du den Zugriff auf die Datei doch mit einer entsprechenden Klasse kapseln, die die anderen Verwender benachrichtigt (z.B. per Observer/Observable), wenn jemand die Datei geschrieben hat.
 

Murray

Top Contributor
20mithrandir hat gesagt.:
Und was glaubst du macht ein Listener-Konzept, wenn nicht implizit selbst pollen?
Wenn ein Listener für ein Event eingetragen wird, dann wird an der Stelle, an der das Event auftritt, die entsprechende Methode des Listener-Objekts aufgerufen; gepollt wird da nicht.
 

Wildcard

Top Contributor
Du musst nur die entsprechenden Libs für Windows und Linux mitliefern. Plattformunabhängig ist es dann immer noch.
Nur bei den anderen Betriebssystemen könnte es problematisch werden.

Und was glaubst du macht ein Listener-Konzept, wenn nicht implizit selbst pollen?
Schau dir den Unterschied zwischen Push und Pull Modell an. Ist ein himmelweiter Unterschied.
JNotify verwendet iNotify für Linux System und die verkorkste WinAPI für Windows Systeme.
Erst wenn nichts davon möglich ist (weil zB der Kernel ohne iNotify support kompiliert wurde) wird auf Polling zurückgegriffen.
 

Murray

Top Contributor
20mithrandir hat gesagt.:
Ein sleep erzeugt jedenfalls bei mir keine Last, ganz im Gegenteil ; - )
Das sleep nicht, wohl aber die Aktionen zwischen den sleeps und der ständige Wechsel zwischen den Threads (sofern man nicht gerade mindestens soviele CPU-Kerne wie Thread hat)
 

20mithrandir

Aktives Mitglied
Ihr müsst nicht immer darauf herumhacken. Als ich das geschrieben hatte, war nirgendwo etwas von einer native Implementierung zu lesen. Und in pure java wäre ein Push Modell nicht so einfach möglich.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Dateizugriff Allgemeine Java-Themen 14
R Input/Output Dateizugriff aus verschiedenen Tools Allgemeine Java-Themen 3
N Dateizugriff in verschiedenen Ordnern Allgemeine Java-Themen 2
L dateizugriff unter windows nicht behindern Allgemeine Java-Themen 2
D Suche Hilfe zum Rechnerübergreifenden Dateizugriff. Allgemeine Java-Themen 3
F Problem mit Websphe. 6 und Dateizugriff Allgemeine Java-Themen 6
W letzten Dateizugriff erfassen? Allgemeine Java-Themen 6
B log4j FileAppender Dateizugriff Allgemeine Java-Themen 7
C DateiZugriff in Java - bsp.txt . Allgemeine Java-Themen 2
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
P Mitbekommen ob der Pc heruntergefahren wird? Allgemeine Java-Themen 13
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
D Read JSON File Problem Allgemeine Java-Themen 9
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
N File Path mit Variablen angeben Allgemeine Java-Themen 1
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
F jar File ausführen Allgemeine Java-Themen 14
M File Binary Representation Allgemeine Java-Themen 1
N jar File auf Mac mit Doppelklick starten Allgemeine Java-Themen 5
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
T Jar File zu exe... Allgemeine Java-Themen 3
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
F Input/Output FileNotFoundException, obwohl File existiert Allgemeine Java-Themen 5
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
L JAR-File auf Ilias (LMS) laufen lassen Allgemeine Java-Themen 0
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
A File lesen Codierung Charset Allgemeine Java-Themen 5
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
I TrueZip add file to archive Allgemeine Java-Themen 10
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
J ftp - delete file ohne appache Allgemeine Java-Themen 8
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
H Laden einer (Resourcendatei) aus einem Jar-File Allgemeine Java-Themen 17
C Authentifizierung mit java.nio.file? Allgemeine Java-Themen 5
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D Java Anwendung mit dll File Allgemeine Java-Themen 5
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
B Objekte anhand von Properties file Allgemeine Java-Themen 41
Dechasa Input/Output Write into File Allgemeine Java-Themen 2
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
C Input/Output Problem bei Datei verschiebung mit File.move und Paths.get() Allgemeine Java-Themen 26
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
M Desktop jar File icon Ändern? Allgemeine Java-Themen 14
O Sax-Parser ließt XML-File doppelt Allgemeine Java-Themen 1
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
Thallius Custom File Chooser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
J Java Download Filedownload File.getFileName Allgemeine Java-Themen 3
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
M pdf File bzw. ausgefüllte pdf Formulare drucken Allgemeine Java-Themen 2
S Input/Output File Not Found FileReader Allgemeine Java-Themen 6
Thallius Serialisiertes File kann auf anderem Rechner nicht geladen werden Allgemeine Java-Themen 12
P Java Dynamic Web Project -> config File Allgemeine Java-Themen 1
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
M File IO Klasse ... wie einbinden Allgemeine Java-Themen 6
O Freies Tool zum Jar-File obfuscaten gesucht! Allgemeine Java-Themen 5
F File.listFiles ohne .sort Allgemeine Java-Themen 6
B XML File JAXB Allgemeine Java-Themen 0
S Platzverbrauch, File oder String Allgemeine Java-Themen 14
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
P Kurze Frage: aus einer File die Zeilenanzahl auslesen Allgemeine Java-Themen 9
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
B Finde letztes veränderte File Allgemeine Java-Themen 4
E Zip-File entpacken: unterschiedlicher Zeitaufwand bei unterschiedlicher Puffergröße Allgemeine Java-Themen 2
Guybrush Threepwood File.canWrite() und UAC Allgemeine Java-Themen 7
N Input/Output Mit Windows 7 erzeugtes zip-File in Java 7 öffnen Allgemeine Java-Themen 5
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
H XML-File mit Java erzeugt Frage Allgemeine Java-Themen 10
V C-Header Datei aus .java File herstellen Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben