InputStream im finally-Block schließen

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi,

Hier erstmal mein Rumpf-Code:

Code:
...
LineNumberReader readsFile;
        try {
            readsFile = new LineNumberReader(new FileReader(datName));
            blabla;
            readsFile.close();
        } catch (IOException e) {
            blabla;
        } finally {
            readsFile.close();
        }
...

Ich möchte aus einer Testdatei lesen. Wenn da ein Fehler auftritt, soll eine IOException geworfen werden.
Dann soll der Input Stream (readsFile) auf jeden Fall wieder geschlossen werden, was im "finally-Block" passieren soll, weil ich den so verstanden habe, dass, wenn die Exection geworfen wird und der catch-Block abgearbeitet wurde, der finally-Block abgearbeitet wird. (blöder Satz)
Für Vorschläge wie man es vielleicht besser macht, bin ich natürlich offen.

Wenn ich compiliere, erscheint folgende Fehlermeldung (mit Zeilenummer bei readsFile.close(); im finally-Block):

Code:
variable readsFile might not have been initialized
            readsFile.close();
 
G

Gast

Gast
wenn du readsFile nicht mit einem Wert initialisiert, dann kannst du auch nicht sagen
readsFile.close();

weil readsFile ja keinen Wert hat. ist so als würdest du schreiben
null.close();
 
G

Guest

Gast
Gast hat gesagt.:
wenn du readsFile nicht mit einem Wert initialisiert, dann kannst du auch nicht sagen
readsFile.close();

(in Zeile 5) ?
readsFile = new LineNumberReader(new FileReader(datName));
 
B

bygones

Gast
diese initialisierung ist lokal im try block. Im Prinzip reicht ein readsFile = null;

der compiler will nur etwas da stehen haben :)
 

Bleiglanz

Gesperrter Benutzer
dein Problem ist das scheitern des Konstruktors in new

=> wenn da drin eine Ex fliegt, dann entsteht ja gar kein Reader...

richtig:
Code:
      try {
            readsFile = new LineNumberReader(new FileReader(datName));
            blabla;
            readsFile.close();
            readsFile = null;
        } catch (IOException e) {
            blabla;
        } finally {
            if(null!=readsFile) readsFile.close();
        }
 
G

Guest

Gast
readsFile = null, wie deathbyaclown meinte, hat das Problem gelöst. Vielen Dank.
Da finally sowieso immer ausgeführt wird, habe ich das readsFile.close() im try-Block weggelassen.
Und da der Compiler noch rummeckerte, musste ich es da auch noch mit try/catch ummantelt.

So siehts nun aus und es scheint zu funktionieren:

Code:
LineNumberReader readsFile = null;
        try {
            readsFile = new LineNumberReader(new FileReader(datName));
            blabla;
        } catch (FileNotFoundException e) {
            blabla;
        } catch (IOException e) {
            blabla;
        } finally {
            if (readsFile != null) {
                try {
                    readsFile.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
 
L

Leroy42

Gast
Genau das schreibe ich auch immer bei Dateioperationen, aber weiß jemand, warum
es beim Schließen einer Eingabedatei überhaupt eine Exception geben kann?

Bei einer Ausgabedatei kann ich mir das schon vorstellen wenn sie zum Beispiel gepuffert
erzeugt wird und kurz vorm Schließen das Medium (Wechselplatte, ...) einfach entfernt
wird.

Aber beim Schließen der Ausgabedatei muß man eben keine Exception abfangen.

Irgendwie merkwürdig ???:L
 

Bleiglanz

Gesperrter Benutzer
Aber beim Schließen der Ausgabedatei muß man eben keine Exception abfangen.
[/qoute]
wo hast du das her?

OutputStream#close() throws IOException

hoffentlich meinst die nicht den elenden kaputten guten alten
PrintStream und PrintWriter, die aus lauter Gutmütigkeit alle Exceptions verschlucken
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
berserkerdq2 inputstream und bufferedwirter /outputstream und bufferedwriter Java Basics - Anfänger-Themen 9
T Bluetooth, Inputstream Java Basics - Anfänger-Themen 0
I InputStream beim zweiten Mal fehlerhaft Java Basics - Anfänger-Themen 10
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
B InputStream / OutputStream / PipedOutputStream und managedExecutorService Java Basics - Anfänger-Themen 3
B java.io.OutputStream zu java.io.InputStream konvertieren Java Basics - Anfänger-Themen 18
B Hilfe bei InputStream To File Java Basics - Anfänger-Themen 22
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
B Konvertieren: Outputstream zu Inputstream Java Basics - Anfänger-Themen 13
J Was genau macht die Methode close() im InputStream? Java Basics - Anfänger-Themen 5
E InputStream im Servlet wirft Exception Java Basics - Anfänger-Themen 5
D InputStream parsen und als Bilddatei abspeichern Java Basics - Anfänger-Themen 1
G Input/Output InputStream gibt nicht die Korrekten Werte aus Java Basics - Anfänger-Themen 10
T Datentypen InputStream to list of Int (or similar) Java Basics - Anfänger-Themen 4
P bytes aus einem InputStream zählen Java Basics - Anfänger-Themen 2
P InputStream eines Musik-Streams abspielen Java Basics - Anfänger-Themen 2
I Resize Image - Einlesen von InputStream Java Basics - Anfänger-Themen 3
T Input/Output Exception bei einem InputStream Java Basics - Anfänger-Themen 2
W ProcessBuilder InputStream in Array speichern Java Basics - Anfänger-Themen 3
K InputStream erstellen Java Basics - Anfänger-Themen 4
B Input/Output Data / Buffer / File Outstream Inputstream Java Basics - Anfänger-Themen 2
L Webservice soll InputStream übergeben bekommen Java Basics - Anfänger-Themen 7
S Eigener InputStream, Hilfe bei read-Methode Java Basics - Anfänger-Themen 6
C InputStream Java Basics - Anfänger-Themen 2
O Input/Output Fragen zum InputStream Java Basics - Anfänger-Themen 7
E Input/Output Relativer Bild-Pfad für InputStream Java Basics - Anfänger-Themen 5
G Frage zu InputStream? Java Basics - Anfänger-Themen 11
E Socket InputStream "terminiert" nicht Java Basics - Anfänger-Themen 4
E Input/Output Inputstream während der Laufzeit füllen Java Basics - Anfänger-Themen 2
A Frage zu Beispiel eines Dekorierers von InputStream Java Basics - Anfänger-Themen 4
B Input/Output InputStream (JSch) in OutputStream (Blob) überführen Java Basics - Anfänger-Themen 8
P Input/Output InputStream Listener? Java Basics - Anfänger-Themen 7
M Eigener InputStream will nicht mit BufferedReader Java Basics - Anfänger-Themen 3
S Input/Output Neuen InputStream System.in setzen Java Basics - Anfänger-Themen 11
A InputStream gibt nur jede 2te Zeile aus Java Basics - Anfänger-Themen 7
J InputStream FTP Java Basics - Anfänger-Themen 8
brunothg Inputstream zu Filechannel Java Basics - Anfänger-Themen 6
K StringWriter/String nach InputStream konvertieren Java Basics - Anfänger-Themen 3
Benji0815 Inputstream aus Konsole in JTextArea Java Basics - Anfänger-Themen 14
A Problem mit InputStream Java Basics - Anfänger-Themen 4
bastiann Kann man Inputstream nur auf ein Zeichen anwenden? Java Basics - Anfänger-Themen 5
U Inputstream.read()/readLine() blockiert immer Java Basics - Anfänger-Themen 18
S Problem mit url, inputStream und bytes beim Quellcode laden. Java Basics - Anfänger-Themen 6
G Kompletten InputStream der Kommandokonsole ausgeben Java Basics - Anfänger-Themen 8
G InputStream aufrufen, ändern und zurück geben Java Basics - Anfänger-Themen 2
W Zeichen ersetzen im InputStream Java Basics - Anfänger-Themen 3
N String vom InputStream in TextArea übertragen Java Basics - Anfänger-Themen 6
A Frage zu Puffergröße bei InputStream Java Basics - Anfänger-Themen 9
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
M Datei speichern mittels InputStream Java Basics - Anfänger-Themen 13
P InputStream in Byte-Array speichern Java Basics - Anfänger-Themen 2
G String in InputStream umwandeln? Java Basics - Anfänger-Themen 8
M Auslesen eines InputStream Java Basics - Anfänger-Themen 4
M Problem mit InputStream Java Basics - Anfänger-Themen 7
S Probleme mit InputStream- Rückgabe Java Basics - Anfänger-Themen 4
I InputStream von Konsole abfangen Java Basics - Anfänger-Themen 6
K InputStream? Java Basics - Anfänger-Themen 3
S Sockets and InputStream Java Basics - Anfänger-Themen 2
M InputStream einer Socketverbindung funktioniert nicht Java Basics - Anfänger-Themen 19
M Byte InputStream zu Zeichenformat Unicode bzw String konvert Java Basics - Anfänger-Themen 5
R InputStream erstellen, der aus String liest Java Basics - Anfänger-Themen 8
R ENTER in InputStream nicht lesen Java Basics - Anfänger-Themen 4
G InputStream auslesen und zurückschreiben Java Basics - Anfänger-Themen 9
R BufferedReader <-> InputStream Java Basics - Anfänger-Themen 3
R Suche geeignetes InputStream Java Basics - Anfänger-Themen 2
D InputStream -> Image Java Basics - Anfänger-Themen 6
M String zu InputStream/InputSource Java Basics - Anfänger-Themen 2
S Problem mit InputStream / flush() / BufferedReader Java Basics - Anfänger-Themen 19
C Aus ein Image-Objekt einen InputStream generieren? Java Basics - Anfänger-Themen 6
J InputStream in String umwandeln Java Basics - Anfänger-Themen 5
J InputStream ist null Java Basics - Anfänger-Themen 7
P InputStream, BufferedString Java Basics - Anfänger-Themen 3
A Exception handeling mit finally und objektreferenzen Java Basics - Anfänger-Themen 6
B try catch finally Java Basics - Anfänger-Themen 2
K JOptionPane/catch/try/finally/if Java Basics - Anfänger-Themen 9
O Finally beim Fenster schliessen Java Basics - Anfänger-Themen 3
H Geht dieser Code noch einfacher (try catch finally) Java Basics - Anfänger-Themen 7
S try-catch-finally-Problem Java Basics - Anfänger-Themen 10
T Sinn von finally? Java Basics - Anfänger-Themen 3
N try and catch block in finally Java Basics - Anfänger-Themen 8
J finally Java Basics - Anfänger-Themen 5
M try finally Java Basics - Anfänger-Themen 4
C try finally - Streams schließen Java Basics - Anfänger-Themen 7
F Fehlerbehandlung finally weglassen?? Java Basics - Anfänger-Themen 4
S sauberer Stil von return Wert (try, catch, finally) Java Basics - Anfänger-Themen 9
I Frage zu Try - Catch - Finally Java Basics - Anfänger-Themen 10
T try-catch-finally Java Basics - Anfänger-Themen 8
U catch mit finally Java Basics - Anfänger-Themen 5
M Beispiel für sinnvolles finally? Java Basics - Anfänger-Themen 17
T Programm so abbrechen, dass finally ausgeführt wird Java Basics - Anfänger-Themen 7
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
D try/catch-Block bei for-Schleife Java Basics - Anfänger-Themen 14
Zwanglos Warum wird nur die erste Zeile im while Block ausgeführt? Java Basics - Anfänger-Themen 8
B Try-Catch Block Java Basics - Anfänger-Themen 3
F Mehrere Exceptions in einem Catch-Block abfangen Java Basics - Anfänger-Themen 12
E Synchronisierte Methoden vs. Synchronized(lockObject) Block Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben