Wann wird eine EOFException auftreten in der JAVA-streams
Arbeite ich mit einem DataInputStream und hatte eine Frage über EOFExceptions.
Laut java docs:
Signalisiert, dass ein Ende der Datei oder am Ende
Streams erreicht wurde unerwartet beendet
während der Eingabe.Diese Ausnahme wird hauptsächlich von Daten
input-streams, um zu signalisieren das Ende des Stroms.
Beachten Sie, dass viele andere input-Operationen
Rückkehr besonderen Wert auf Ende
stream anstatt werfen eine
Ausnahme.
Bedeutet dies, dass, wenn eine EOFException generiert wird, der stream wird nicht NIE wieder öffnen? Bedeutet es, man sollte NIE erwarten, dass mehr Daten aus immer?
Wenn ein Ausgabestrom wird verbunden mit einem inputstream und Ausgabestrom.close() aufgerufen wird, wird ein inputstream erhalten die EOFException oder eine IOException aus?
Eine IOException aus, wie beschrieben:
Signale, ein I/O-Ausnahme von einigen
Art aufgetreten ist. Diese Klasse ist die
Allgemeine Klasse von Ausnahmen erzeugt
von fehlgeschlagenen oder unterbrochenen I/O
Operationen.
Tut einem in der Nähe der Ausgabestrom erzeugen Sie entweder eine EOFException oder eine IOException aus, auf dem datainputstream Seite?
InformationsquelleAutor der Frage jbu | 2009-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Stichwort unerwartet.
Wenn Sie DataInputStream und liest ein 4-byte integer, aber es waren nur 3 verbleibender bytes im stream erhalten Sie eine EOFException.
Aber wenn Sie aufrufen von read() am Ende der stream dann bekommst du nur -1 zurück und keine Ausnahme.
InformationsquelleAutor der Antwort Pyrolistical
Wenn Sie erreichen das Ende eines Streams (Ende der Datei, oder peer beendet die Verbindung):
read()
gibt -1 zurück,readLine()
gibt null zurück,readXXX()
für alle anderen X wirftEOFException
.Der stream ist noch offen, aber Sie sollten aufhören zu Lesen und schließen Sie es.
InformationsquelleAutor der Antwort user207421
Beantworten anderen Teil deiner Frage: ja, EOF bedeutet, dass keine Daten mehr zu sehen sein wird auf dem stream zu, sollten Sie es schließen.
InformationsquelleAutor der Antwort Dan Breslau
EOFException ist eine Unterklasse von IOException. Es wird ausgelöst werden, wenn Sie versuchen, aus dem stream gelesen und es gibt keine Daten mehr gelesen werden können (z.B. weil Ihr DataInputStream gewickelt ist, um einen FileInputStream und Sie versuchen zu Lesen, die mehr bytes sind als Links in der Datei).
InformationsquelleAutor der Antwort Simon Nickerson
EOFException geworfen wird:
InformationsquelleAutor der Antwort Saili Waichal