Eine Datei wird zum Lesen geöffnet, indem ein FileInputStream-Objekt erstellt wird.
Der FileInputStream(String filename)-Konstruktor löst eine FileNotFoundException aus, wenn die Datei nicht existiert.
FileNotFoundException ist eine Unterklasse von IOException.
Um eine Datei zu lesen, verwenden Sie die Methode read(), die ein Byte liest und einen ganzzahligen Wert zurückgibt.
read() gibt -1 zurück, wenn das Ende der Datei erreicht ist, und löst bei einem Fehler eine IOException aus.
Nach der Verwendung muss die Datei mit der Methode close() geschlossen werden, um Systemressourcen freizugeben.
Wenn die Datei nicht geschlossen wird, kann es zu Speicherverlusten kommen.
Das Beispielprogramm verwendet read(), um den Inhalt einer Datei anzuzeigen, und verwendet Try/Catch-Blöcke, um E/A-Fehler zu behandeln.
Hinweis: In Java tritt ein Speicherverlust auf, wenn das Programm Speicherressourcen, die es nicht mehr verwendet, nicht freigibt und diese Ressourcen unnötig belegt bleiben. Obwohl die Sprache über eine automatische Garbage Collection für nicht referenzierte Objekte verfügt, befasst sich diese Sammlung nicht direkt mit externen Ressourcen wie Dateien oder Netzwerkverbindungen. Wenn Sie die Datei nicht schließen, bleiben die Systemressourcen ausgelastet, es kommt zu Leistungseinbußen und Fehlern und Ausfällen (z. B. beim Versuch, eine andere Datei zu öffnen).
Das vorherige Beispiel schließt den Flow nach dem Try-Block zum Lesen der Datei.
Java ermöglicht einen alternativen Ansatz: den Aufruf von close() innerhalb eines Finally-Blocks.
Mit dem „finally“-Block wird die Datei geschlossen, unabhängig davon, wie der try-Block endet.
Dieser Ansatz garantiert, dass die Datei geschlossen wird, auch wenn eine Ausnahme auftritt.
Der Try-Block greift auf die Datei zu und wird schließlich ausschließlich zum Schließen dieser verwendet.
Der Vorteil der Verwendung des „final“-Blocks besteht darin, das Schließen der Datei zu garantieren, selbst wenn eine Nicht-E/A-Ausnahme auftritt.
Obwohl dieser Ansatz bei kleinen Programmen nicht kritisch ist, ist er bei größeren Programmen unerlässlich, um Probleme zu vermeiden.
Die Verwendung von „final“ hilft, den Aufwand zu vermeiden, der bei unerwarteten Ausnahmen mit nicht geschlossenen Dateien verbunden ist.
Dateiöffnung und Dateizugriff in einem einzigen Try-Block zu kapseln und schließlich mit „final“ zu schließen, ist eine bewährte Methode.
Dieser Ansatz kann den Code vereinfachen und die Freigabe von Ressourcen sicherstellen.
fin wird auf null initialisiert und im „finally“-Block wird die Datei nur geschlossen, wenn fin nicht null ist.
Dadurch wird verhindert, dass close() aufgerufen wird, wenn beim Öffnen der Datei eine Ausnahme auftritt.
Die Try/Catch-Sequenz kann vereinfacht werden, da FileNotFoundException eine Unterklasse von IOException ist.
Durch das bloße Abfangen von IOException entfällt die Notwendigkeit, FileNotFoundException separat abzufangen.
In diesem Fall beschreibt die Standardausnahmemeldung den Fehler.
...
} Catch(IOException exc) {
System.out.println("E/A-Fehler: " exc);
} endlich {
...
Das obige ist der detaillierte Inhalt vonEinträge in einer Datei generieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!