From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100141.html | 252 +++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100141.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100141.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100141.html b/Master/Reference Architectures and Patterns/hjp5/html/k100141.html new file mode 100644 index 0000000..a90df21 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100141.html @@ -0,0 +1,252 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 21 - Datei- und Verzeichnis-Handling +
+
+ + + + +

21.5 Temporäre Dateien und Lockdateien

+
+ +
+ +

+Das Anlegen von Dateien wurde ja bereits in früheren Abschnitten +behandelt. Hier soll es noch einmal erwähnt werden, weil die +Klasse File +zusätzlich die Möglichkeit bietet, temporäre Dateien +und Lockdateien anzulegen. Beide Varianten haben ihre Anwendungen, +und wir wollen sie im folgenden kurz vorstellen. + + + + +

21.5.1 Temporäre Dateien

+ +

+Zum Anlegen von temporären Dateien stehen zwei Varianten der +Methode createTempFile +zur Verfügung: +

+ + + + + +
+ +
+public static File createTempFile(
+  String prefix, String suffix, File dir
+)
+  throws IOException
+
+public static File createTempFile(
+  String prefix, String suffix
+)
+  throws IOException
+
+
+
+java.io.File
+ +

+In beiden Fällen ist es erforderlich, einen Präfix- und +einen Suffix-String zu spezifizieren. Als Präfix sollte normalerweise +ein kurzer String von drei oder vier Buchstaben verwendet werden, +der den Typ der temporären Datei identifiziert. Der Suffix wird +als Dateierweiterung verwendet, er könnte beispielsweise .tmp +oder .$$$ sein. createTempFile +füllt den Platz zwischen Präfix und Erweiterung mit einer +Zeichenkette, so dass der resultierende Dateiname eindeutig ist. Wird +kein weiterer Parameter angegeben, legt die Methode eine neue temporäre +Datei in einem systemspezifischen Verzeichnis an (typischerweise \tmp +oder \temp). Optional kann als drittes +Argument ein File-Objekt +übergeben werden, das ein alternatives Verzeichnis für die +temporäre Datei angibt. + +

+Das folgende Listing zeigt ein einfaches Beispiel für die Anwendung +der Methode createTempFile: + + +

+ + + + + +
+ +
+001 /* Listing2107.java */
+002 
+003 import java.io.*;
+004 
+005 public class Listing2107
+006 {
+007   public static void main(String[] args)
+008   {
+009     try {
+010       File tmp = File.createTempFile("xyz", ".tmp", null);
+011     } catch (IOException e) {
+012       System.out.println(e.toString());
+013     }
+014   }
+015 }
+
+
+Listing2107.java
+ +Listing 21.7: Anlegen einer temporären Datei

+ +

+Auf dem Testrechner wurden bei zweimaligem Aufruf des Programms im +Verzeichnis c:\tmp die beiden folgenden +Dateien angelegt: + +

+xyz11626.tmp
+xyz39639.tmp
+
+ + + + + +

21.5.2 Lockdateien

+

+ + + + + + + + + + + +
+ +

+Ein häufiger Kritikpunkt an den JDKs vor der Version 1.2 war, +dass Java keine portable Möglichkeit zum Sperren von Dateien +vorsah. Damit war es nicht (oder nur mit zusätzlichem Aufwand) +möglich, Programme zu schreiben, die in einer Mehrbenutzerumgebung +von unterschiedlichen Arbeitsplätzen gleichzeitig kontrolliert +auf dieselben Dateien zugreifen.

+ + + + +
 JDK1.1-6.0 
+
+ +

+Mit den Methoden createNewFile +und deleteOnExit +bietet das JDK seit der Version 1.2 nun eine rudimentäre Möglichkeit, +diese Fähigkeiten zu realisieren: +

+ + + + + +
+ +
+public boolean createNewFile()
+  throws IOException
+
+public void deleteOnExit()
+
+
+
+java.io.File
+ +

+createNewFile +erzeugt eine neue Datei aus dem Dateinamen des zugehörigen File-Objekts. +Die Datei wird aber nur dann erzeugt, wenn sie bisher noch nicht vorhanden +war. War sie dagegen bereits vorhanden, schlägt der Aufruf fehl +und liefert false +als Rückgabewert. Bei Erfolg wird die Datei angelegt und true +zurückgegeben. Das JDK garantiert, dass die beiden erforderlichen +Teiloperationen Feststellen, ob die Datei bereits existiert +und Anlegen einer neuen Datei atomar ablaufen, also nicht unterbrechbar +sind. Durch Aufruf von deleteOnExit +kann sichergestellt werden, dass die Datei beim Beenden der VM in +jedem Fall gelöscht wird, selbst wenn das Ende durch eine Ausnahme +ausgelöst wurde. + +

+Beide Methoden können nun auf unterschiedliche Weise zur Realisierung +eines Locking-Systems verwendet werden. So kann beispielsweise der +Name der Datei als zu sperrende Ressource und die Datei selbst als +eigentliche Sperre angesehen werden. Dann würde es für jede +zu sperrende Ressource eine eigene Sperrdatei geben (was bei einer +großen Anzahl von potentiellen Ressourcen sehr viele einzelne +Dateien bedeuten würde). Oder es ist denkbar, dass alle Sperrinformationen +in einer einzigen Datei gehalten werden und nur der Zugriff auf diese +Datei mit Hilfe einer Sperrdatei gesichert wird. Diese würde +dann mit createNewFile +in der Art eines Semaphors angelegt werden, um die Sperrdatei zu betreten, +und nach Ende der Bearbeitung wieder entfernt werden. +


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3