"Too many open files" bei Property List

  • Themenstarter KartoffelKiffer
  • Beginndatum
Status
Nicht offen für weitere Antworten.
K

KartoffelKiffer

Gast
Hallo,

ich habe eine Konfigurationsdatei, die als property gehalten wird. Also im Muster key=value\nkey=value ...

Ich habe eine öffentliche Klasse ReadConfig, welche einen Konstruktor enthält, der wiederrum ein Element private Properties erstellt.

Mittels this.properties.load(new FileInputStream(file)) fülle ich meine Properties mit einer Liste von Elementen aus der übergebenen Datei.

Möchte ich nun ein spezielles Elemenent haben, lese ich es in einer getProperty Funktion aus, die mir auch lediglich this.getPropery(key) zurück gibt. Das Ganze noch in einen try-catch Block gepackt, und das wars.

Jetzt bekomme ich seit einiger Zeit den Fehler, "Too many open files", welches genau auf die Datei zeigt. Es kann sein, dass MAXIMAL 20 Aufrufe der Datei gleichzeitig in einer Prozedur vorkommen, das aber auch wirklich selten.

Der Fehler tritt auch bloß sporadisch auf, sodass er schlecht reproduzierbar ist.

Habe ich vielleicht vergessen etwas zu schließen, das mir nicht bekannt ist? Der "Property-Reader" müsste doch das übergebene File von allein schließen, oder sehe ich das falsch?



Mfg Tom
 

Ariol

Top Contributor
wieso öffnest du die datei eigentlich immer wieder neu?

ich hab hier auch ein projekt, an dem ich mir Sprachdateien über die Properties erstellt habe - die entsprechende Datei wird ganz zu Anfang genau 1mal geladen und dann in ca. 10 anderen Klassen verwendet.
 

Murray

Top Contributor
KartoffelKiffer hat gesagt.:
Habe ich vielleicht vergessen etwas zu schließen, das mir nicht bekannt ist? Der "Property-Reader" müsste doch das übergebene File von allein schließen, oder sehe ich das falsch?
Warum sollte er das tun? Du übergibst ja kein File, sondern einen InputStream - das kann ja alles mögliche sein: eine Socket-Verbindung, die Standardeingabe oder eben ein FileInputStream. Wenn der Stream wirklich nur die Property-Daten enthält, dann kann er nach dem Lesen geschlossen werden; i.A. wäre das aber nicht so gut.
Die Datei wird in deinem Fall erst dann geschlossen, wenn das FileInputStream-Objekt vom Garbage-Collector beseitigt wird - und falls das nicht rechtzeitig passiert, kommt der Fehler.

Es wäre aber wirklich besser, die Datei nur einmal zu lesen.
 
K

KartoffelKiffer

Gast
Wenn ich die Datei einmal zu Anfang lade, besteht den ganzen Tag nur die Version der Konfigurationsdatei, wie zu Anfang eingelesen.

Wobei mir gerade in den Sinn kommt das Objekt auch neu zu laden, sobald eine Änderung gemacht wird.

Das ist natürlich mit etwas Aufwand verbunden...
 

Murray

Top Contributor
Klar, du solltest den Zugriff auf jeden Fall in eine eigene Klasse kapseln. Und in der Klasse kannst du dann ja entscheiden, ob die Datei gegenüber seit letzten Einlesen modifiziert worden ist und daher neu gelesen werden muss.

Trotzdem wäre ich mit zur Laufzeit änderbaren Properties vorsichtig.

Bsp:
Code:
PrintWriter dbg = null;
if ( "yes".equalsIgnoreCase( "getMyApplicationProperties().get( "debug"))) {
  dbg = new PrintWriter( "debug.txt");
}

/* ... */

if ( "yes".equalsIgnoreCase( "getMyApplicationProperties().get( "debug"))) {
  dbg.println( "mache dies und jenes");
}

/* ... */

if ( "yes".equalsIgnoreCase( "getMyApplicationProperties().get( "debug"))) {
  dbg.close();
}

Wenn sich jetzt während der Abarbeitung dieser Sequenz der Wert der Property ändert, wäre das nicht gut - zumindest während dieser Codesequenz sollte man von einem unveränderlichen Zustand ausgehen, oder man müsste wesentlich defensiver programmieren.

Das Beispiel ist natürlich an den Haaren herbeigezogen; normalerweise würde man ein Logging sicher anders implementieren, aber es geht ja um das Prinzip.
 

Ariol

Top Contributor
ich versteh das problem nicht...

wenn du was an den Properties änderst mit z.B. setProperty(), dann ist das erstmal nur in deinem properties-object.

also, wenn deine Änderungen nur intern im Programm sind, werden diese direkt in dem Objekt übernommen und du hast immer den aktuellen Stand.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A External Sort - too many open files Allgemeine Java-Themen 6
J Too many open files Allgemeine Java-Themen 11
J Too many files open Allgemeine Java-Themen 4
M Runtime.exec() => java.io.exception: too many open files Allgemeine Java-Themen 10
O too many window handles? <-- Warum? Allgemeine Java-Themen 18
G To many Code? Was soll der scheiß? Allgemeine Java-Themen 11
D Open Source Library zum erstellen von PDFs Allgemeine Java-Themen 1
C Microsoft unterstützt Open JDK Allgemeine Java-Themen 7
ms_cikar JavaOSC (Open Sound Control) Allgemeine Java-Themen 1
Neumi5694 Desktop.getDesktop().open(...); Allgemeine Java-Themen 0
M Umstieg Oracle JDK zu Open JDK Allgemeine Java-Themen 20
E Open Declaration Funktioniert nicht Allgemeine Java-Themen 0
J Druckvorgang mit Java beenden (Open Office) Allgemeine Java-Themen 3
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
M Open Source Projekte => wo herunterladen? Allgemeine Java-Themen 2
M Open Source Projekte / source - binaries Allgemeine Java-Themen 13
I Javafx Open/Read und Tree Funktion Allgemeine Java-Themen 14
N GPIB - Fehler: Unable to open device Allgemeine Java-Themen 1
G Desktop open() - Problem mit Media Player Allgemeine Java-Themen 4
C Open Soure Projekte für parallele Programmierung Allgemeine Java-Themen 6
K associate collection with two open sessions Allgemeine Java-Themen 12
A Open Office Formeln Allgemeine Java-Themen 7
D Ersetzen in Open Office Dokument Allgemeine Java-Themen 2
KrokoDiehl Desktop.open() und warten? Allgemeine Java-Themen 3
1 Java <-> Open Office Allgemeine Java-Themen 5
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
J Open Source Projekt anbieten - Leitfaden gesucht Allgemeine Java-Themen 3
T linux problem mit Desktop.getDesktop().open(..) Allgemeine Java-Themen 5
M bug? datei oeffnen nicht Desktop.open Allgemeine Java-Themen 3
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 7
Daniel_L Fehler in Desktop.getDesktop().open()? Allgemeine Java-Themen 3
Daniel_L Desktop-Api: Problem mit open() und Umlauten Allgemeine Java-Themen 5
V Probleme mit Desktop.open() ? Allgemeine Java-Themen 4
E javax.comm: Suche eine open source Alternative zu rxtx Allgemeine Java-Themen 8
MasterEvil Open Office Converter Allgemeine Java-Themen 11
Y Open Source Plattformen Allgemeine Java-Themen 4
C [javax.mail] Folder not open Allgemeine Java-Themen 2
L Open Source Projekt Allgemeine Java-Themen 7
S Runtime exec unter MacOS X will nicht "open pfad" Allgemeine Java-Themen 7
J integration in Open Office Allgemeine Java-Themen 2
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
H Mehrere PNG-Files in einer Datei Allgemeine Java-Themen 9
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
X Files.walkFileTree zählt nicht richtig Allgemeine Java-Themen 2
L Mehrere .Jar Files aufrufen Allgemeine Java-Themen 9
P Am Application Server - Selbe files aber trotzdem CNF Allgemeine Java-Themen 2
B Maven Zugriff auf files aus einem kompilierten jar Allgemeine Java-Themen 15
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
M *.class Files ausführen Allgemeine Java-Themen 2
F Java moved Files statt sie zu kopieren Allgemeine Java-Themen 12
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
C Input/Output Zip Files über Socket senden und empfangen Allgemeine Java-Themen 6
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
X Wav-Files abspielen Allgemeine Java-Themen 2
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
W audio files metadaten Allgemeine Java-Themen 2
M Threads Excel files bearbeiten Allgemeine Java-Themen 4
J Wie kann man .txt Files übers Internet verschicken? Allgemeine Java-Themen 53
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
K Zip-Archive mit temporären Files erstellen Allgemeine Java-Themen 16
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
M wav-files kanäle zusammenfügen + pitchen Allgemeine Java-Themen 6
R Löschen von Files nicht möglich Allgemeine Java-Themen 11
B Files.isDirectory Allgemeine Java-Themen 14
P Ordnerstruktur nach .js-Files durchsuchen Allgemeine Java-Themen 2
L Class Files , Methode .delete() Allgemeine Java-Themen 13
P Files - nach der reihe String reinschreiben Allgemeine Java-Themen 2
J Laden von JAR Files geht ohne ADMIN Rechte sehr langsam Allgemeine Java-Themen 6
A Navigation zu Files innerhalb jar Allgemeine Java-Themen 3
P JAVA Bilder/Videos in Form von Files vergleichen Allgemeine Java-Themen 7
B Eclipse Attache source to own jar-files Allgemeine Java-Themen 2
B Permissions of Folders/Files Allgemeine Java-Themen 6
E Files Kopieren Allgemeine Java-Themen 8
V Mac: Paketinhalt eins Files öffnen, wie? Allgemeine Java-Themen 3
M Übergabe mehrer Files an selbstprogrammieren Parser Allgemeine Java-Themen 4
reibi Separator in java.util.Properties-Files Allgemeine Java-Themen 3
M Webservices: WSDL Files ohne "Service" Element? Allgemeine Java-Themen 4
ruutaiokwu System.out auf files umlenken in log4j.xml Allgemeine Java-Themen 4
X Log files monitoren Allgemeine Java-Themen 7
reibi Files über Classpath laden Allgemeine Java-Themen 22
S Viele zip-files zu einem kombinieren..? Allgemeine Java-Themen 3
B Öffnen und schließen von Pdf-Files Allgemeine Java-Themen 8
T Class-files zur Laufzeit zu Reflection-Zwecken laden Allgemeine Java-Themen 18
R in .jar werden files nicht gefunden!!! Allgemeine Java-Themen 5
N Fehler mit Jar-Files Allgemeine Java-Themen 9
J BufferedImage aus PNG Files haben keinen Type Allgemeine Java-Themen 4
U Properties in Jar Files Allgemeine Java-Themen 3
Developer_X Extract Zip Files with Java Allgemeine Java-Themen 21
N 2 files auf gleichheit vergleichen Allgemeine Java-Themen 5
A Get all Files in Workspace Allgemeine Java-Themen 9
Quaxli Files massenhaft löschen Allgemeine Java-Themen 3
N Versionierung von jar-Files Allgemeine Java-Themen 5
Daniel_L Best Practice zum Löschen von Log-Files? Allgemeine Java-Themen 8
V aus mehreren jar files, ein großes basteln Allgemeine Java-Themen 22
J Eclipse: Einbindung von jar-Files funktioniert nicht Allgemeine Java-Themen 4
O .jar Files - Tools zum generieren Allgemeine Java-Themen 25
A Problem: Mehrere PDF-Files nacheinander Öffnen Allgemeine Java-Themen 12
A jpeg Files mit eigenem Programm öffnen Allgemeine Java-Themen 4
M Embedded Files aus PDF extrahieren Allgemeine Java-Themen 3
M Debuggen von Code in jar-Files? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben