Während java.io.RandomAccessFilehat eine close()Methode java.io.Filenicht. Warum ist das so? Wird die Datei beim Abschluss automatisch geschlossen oder so?
Wenn Sie sich die Java-API ansehen, können Sie die Antwort sofort erhalten.
Gigadot
43
Ich habe gelernt, dass Leute hilfreicher sind als die ansonsten hervorragende Java-Spezifikation.
Albus Dumbledore
6
b / c es kann nicht geöffnet werden :)
bestsss
6
Weil es nichts öffnet. Und die Leute sind wesentlich weniger zuverlässig als die offizielle Java-Spezifikation.
Marquis von Lorne
Antworten:
141
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.)
Aber was ist dann mit allen Verzeichnislistenmethoden? Sie hätten Pathvollständig von den getrennt werden sollen .
Biziclop
3
Einverstanden, aber in jedem Fall wird entweder File oder RandomAccessFile falsch benannt. So etwas wie RandomAccessFileStream könnte besser sein, aber jetzt ist es viele Jahre zu spät.
Maaartinus
7
"Eigentlich wurde diese Klasse von den Bibliotheksautoren falsch benannt, sie sollte so etwas wie Pfad heißen" -> Sie haben dich gehört. Im nio-Paket (New I / O) heißt die ähnliche Klasse jetzt Path. docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html
Minuten
6
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.
Ja. Ich habe nie viel in java.io.RandomAccessFile geschaut. Ich habe immer angenommen, dass es java.io.File überschreibt, aber nicht!. Datei repräsentiert einen Pfad. RandomAccessFile ist ein Objekt, das Festplatten-E / A ausführen kann, da Streams, wenn auch mit einer ganz anderen Implementierung, zufälligen und nicht gestreamten Zugriff ermöglichen können.
Steve Cohen
6
Ein BufferedReader kann geöffnet und geschlossen werden, eine Datei wird jedoch nie geöffnet. Sie stellt lediglich einen Pfad im Dateisystem dar.
Antworten:
Das Javadoc der
File
Klasse beschreibt die Klasse als:File
ist nur eine Darstellung eines Pfadnamens, mit einigen Methoden bezüglich des Dateisystems (wieexists()
) 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.)quelle
java.io.File
stellt keine geöffnete Datei dar, sondern einen Pfad im Dateisystem. Daherclose
macht 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
.quelle
Path
vollstä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.
quelle
Ein BufferedReader kann geöffnet und geschlossen werden, eine Datei wird jedoch nie geöffnet. Sie stellt lediglich einen Pfad im Dateisystem dar.
quelle
Angenommen, Sie haben
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.
quelle