Während java.io.RandomAccessFilehat eine close()Methode java.io.Filenicht. Warum ist das so? Wird die Datei beim Abschluss automatisch geschlossen oder so?
Vielen Dank!
Während java.io.RandomAccessFilehat eine close()Methode java.io.Filenicht. Warum ist das so? Wird die Datei beim Abschluss automatisch geschlossen oder so?
Vielen Dank!
Antworten:
Das Javadoc der FileKlasse beschreibt die Klasse als:
Eine abstrakte Darstellung von Datei- und Verzeichnispfadnamen.
Fileist nur eine Darstellung eines Pfadnamens, mit einigen Methoden bezüglich des Dateisystems (wie exists()) und der Verzeichnisbehandlung, aber die eigentliche Streaming-Eingabe und -Ausgabe erfolgt an anderer Stelle. Streams können geöffnet und geschlossen werden, Dateien nicht.
(Meine persönliche Meinung ist, dass es ziemlich bedauerlich ist, dass Sun dann kreierte RandomAccessFile, was viel Verwirrung mit seiner inkonsistenten Benennung verursachte.)
java.io.Filestellt keine geöffnete Datei dar, sondern einen Pfad im Dateisystem. Daher closemacht es keinen Sinn , eine Methode darauf zu haben.
Eigentlich wurde diese Klasse von den Bibliotheksautoren falsch benannt, sie sollte so etwas wie heißen Path.
Pathvollständig von den getrennt werden sollen .
Im Wesentlichen wickelt eine Datei mit wahlfreiem Zugriff Eingabe- und Ausgabestreams ein, um den wahlfreien Zugriff zu verwalten. Sie öffnen und schließen keine Datei, Sie öffnen und schließen Streams zu einer Datei.
Ein BufferedReader kann geöffnet und geschlossen werden, eine Datei wird jedoch nie geöffnet. Sie stellt lediglich einen Pfad im Dateisystem dar.
Angenommen, Sie haben
File f = new File("SomeFile");
f.length();
Sie müssen das nicht schließen File s , da es nur die Darstellung eines Pfades ist.
Sie sollten immer in Betracht ziehen, nur Leser / Schreiber und tatsächlich Streams zu schließen.