Input/Output Datenströme schließen in eigener Methode

asyoulikeit

Mitglied
Ich habe den Titel so gewählt, weil ich nicht sicher bin, wo genau mein Fehler liegt.

Folgendes Problem:
Ich habe einen Code, der eine Datei byteweise einliest, verarbeitet und anschließend in eine neue Datei schreibt. Danach sind die Byteströme wieder zu schließen. Soweit so gut, funktioniert auch alles. Nun lautet die Aufgabenstellung allerdings, die beiden close() Aufrufe in eine eigene Methode "auszulagern".

Mein Versuch (stark gekürzt):
Java:
public void machWas() {

//Byteströme öffnen

            dis = new DataInputStream(
                      new BufferedInputStream(
                          new FileInputStream(
                              new File(inFile))));
               
            dos = new DataOutputStream(
                      new BufferedOutputStream(
                          new FileOutputStream(
                              new File(outFile))));

/******** Daten werden verarbeitet *******/


// Aufruf Methode close()

close();

} // Ende von machWas()

public void close() {

            if (dis != null) {
                dis.close();
            }
            if (dos != null) {
                dos.close();
            }
} // Ende von close()

Schreibe ich die beiden If-Abfragen an die Stelle des Aufrufs close() innerhalb von machWas() funktionert alles wie es soll. Schreibe ich es so wie oben bekomme ich für dis und dos in der Methode close() die Fehlermeldung "cannot be resolved to a variable". Nach meinem Verständnis stimmt da also was nicht mit dem Aufruf von dis und dos innerhalb von close(). Ich habe aber keinen Schimmer, was.
 

Robat

Top Contributor
cannot be resolved to a variable

Bedeutet, dass deine Variablen dis und dos in der Methode close() nicht verfügbar sind. Ich weiß nicht wie und wo du die beiden Variablen deklariert hast, aber sie scheinen nicht global zu sein.
Daher würde ich dir raten die beiden Streams deiner close Methode als Parameter zuübergeben .. bspw. so:

Java:
public void close(DataInputStream dis, DataOutputstream dos)
{
           if(dis !=null){
                dis.close();
           }
           if(dos !=null){
                dos.close();
           }    
}

Gruß
Robert
 

AndyJ

Bekanntes Mitglied
Das ist vermutlich eine Uebung - aber ein denkbar schlechtes Beispiel. Seit Java7 gibt es den Try-With-Resources Block, der den Vorteil hat, dass beim Verlassen des Blocks alle Resourcen automatisch geschlossen werden (alle die AutoCloseable implementieren um genau zu sein).

Code:
import java.io.*;

public class TryWithResources {

  public static void main(String[] args) {
String inFile = "";
  String outFile = "";
  try (InputStream dis = new DataInputStream(
  new BufferedInputStream(
  new FileInputStream(
  new File(inFile))));
  OutputStream  dos = new DataOutputStream(
  new BufferedOutputStream(
  new FileOutputStream(
  new File(outFile)))); ) {
  // arbeite mit den streams

  // nicht noetig, weil das Verlassen des Blocks alle Streams schliesst, aber dennoch guter Stil
  dis.close();
  dos.close();
  }
  catch (IOException e)
  {
  // handle exception...
  }
  }
}

Wenn Lehrer sich was ausdenken...

Cheers,
Andy
 

AndyJ

Bekanntes Mitglied
Es verdeutlicht was passiert und richtet keinen Schaden an. Code ist fuer Menschen geschrieben, nicht nur fuer die Maschine. Ist vermutlich Ansichtssache.
 

asyoulikeit

Mitglied
Erstmal vielen Dank. Robat hat mir weitergeholfen. Ich habe es zwar nicht so gemacht, wie vorgeschlagen (Aufgabenstellung war so, dass ich mit close() keine Parameter übergeben durfte). Aber ich habe dis und dos eine Ebenen höher deklariert und jetzt läuft alles.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
C Datenströme - Objekte speichern Java Basics - Anfänger-Themen 12
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
T jOptionPane zum schließen von Fenster, wie "Ja" und "Nein" anstatt Yes und No Java Basics - Anfänger-Themen 2
JEP1 Java Dialog Fenster schließen Spiel Java Basics - Anfänger-Themen 0
F Terminal Windows per Befehl schließen? Java Basics - Anfänger-Themen 9
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
L Scanner schließen in While-Schleife? Java Basics - Anfänger-Themen 2
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
F Java Programm schließen Java Basics - Anfänger-Themen 1
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
R Eine Schleife durch eine Methode schließen? Java Basics - Anfänger-Themen 4
J Seite öffnen und schließen Java Basics - Anfänger-Themen 2
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
A Dialog schließt erst nach 2x Klicken auf Schließen Java Basics - Anfänger-Themen 2
K Methoden Schließen eines Fensters Java Basics - Anfänger-Themen 8
H JFrame komplett schließen Java Basics - Anfänger-Themen 3
J Socket schließen - Ist eine SocketException unumgänglich? Java Basics - Anfänger-Themen 4
X JFrame Fenster einzeln schließen Java Basics - Anfänger-Themen 2
D JDialog schließen Java Basics - Anfänger-Themen 11
L Schließen von Fenstern über Standartfunktion (X) Java Basics - Anfänger-Themen 11
F Erste Schritte Aktuelles Fenster durch Event schließen Java Basics - Anfänger-Themen 3
1 Programm schließen und Neustarten Java Basics - Anfänger-Themen 5
S Konsole schließen, nachdem Jar läuft Java Basics - Anfänger-Themen 5
T JFrame per Taste schließen Java Basics - Anfänger-Themen 15
M Erste Schritte Probleme mit Fenster Schließen Java Basics - Anfänger-Themen 6
S Fenster richtig schließen Java Basics - Anfänger-Themen 8
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
S nur neu geöffnetes Fenster schließen Java Basics - Anfänger-Themen 3
D Beim schließen --> Speichern?? Java Basics - Anfänger-Themen 11
T Windows Fenster Schließen Java Basics - Anfänger-Themen 4
F Textfenster lässt sich nicht schließen Java Basics - Anfänger-Themen 3
0 FireFox aus Java Applikation schließen Java Basics - Anfänger-Themen 10
J Fenster schließen? Java Basics - Anfänger-Themen 4
M Befehl zum Fenster schließen? GUI Java Basics - Anfänger-Themen 3
S Programm gestartet - nun schließen? Java Basics - Anfänger-Themen 5
C try finally - Streams schließen Java Basics - Anfänger-Themen 7
B Java Fenster schließen Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
F festlegen, was beim schließen des fensters passiert Java Basics - Anfänger-Themen 12
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
T Per Button Klick Fenster schließen?< Java Basics - Anfänger-Themen 7
T Problem mit Fenster schließen Java Basics - Anfänger-Themen 8
A Java Frame per X schließen? Java Basics - Anfänger-Themen 7
R Endlosschleife verhindert das Schließen des Fensters Java Basics - Anfänger-Themen 10
M (Sub-)Anwendung schließen aus JMenu Java Basics - Anfänger-Themen 6
R Neue GUI öffnen und die Alte schließen Java Basics - Anfänger-Themen 6
K Schließen eines Frames Java Basics - Anfänger-Themen 4
I JButton zum frame schließen Java Basics - Anfänger-Themen 6
B Bei Schließen von Fenster über x Aktion ausführen Java Basics - Anfänger-Themen 6
A Classe um Fenster(classe) zu schließen? Java Basics - Anfänger-Themen 4
S Anderes Fenster schließen Java Basics - Anfänger-Themen 8
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
S Frames schließen Java Basics - Anfänger-Themen 14
G JFrame bei Klick auf X WIndow nicht schließen Java Basics - Anfänger-Themen 2
A Befehl ausführen beim Schließen der Konsole Java Basics - Anfänger-Themen 3
D Beim Schließen eines Dialogs die Ganze Anwendung schließen ? Java Basics - Anfänger-Themen 7
G Pop Up Fenster schließen Java Basics - Anfänger-Themen 2
J Ein Fenster korrekt schließen? Java Basics - Anfänger-Themen 4
N Programm automatisch schließen Java Basics - Anfänger-Themen 3
G streams schließen Java Basics - Anfänger-Themen 2
H Frame schließen Java Basics - Anfänger-Themen 5
G Frank A. - ports einfach öffnen und schließen Java Basics - Anfänger-Themen 3
M Serialisieren beim Schließen des Progs sicher beenden Java Basics - Anfänger-Themen 4
G JSP-Seite automatisch schließen Java Basics - Anfänger-Themen 4
D exceldatei schließen mit java Java Basics - Anfänger-Themen 5
M Frame Schließen Java Basics - Anfänger-Themen 5
N alten Thread vor erneutem Aufruf schließen Java Basics - Anfänger-Themen 9
N Wenn minimiert gedrückt schließen Java Basics - Anfänger-Themen 11
A Fenster schließen soll Button kontakt auslösen. Java Basics - Anfänger-Themen 12
G Fenster lässt sich nicht schließen. Java Basics - Anfänger-Themen 4
P 2. Jframe öffnen und 1. Jframe muss sich dann schließen ? Java Basics - Anfänger-Themen 4
D Meine SetMethode geht nicht || Fenster schließen Java Basics - Anfänger-Themen 3
M Methods ausführen NACH Schließen eines JFrames Java Basics - Anfänger-Themen 9
U Schließen Java Basics - Anfänger-Themen 4
G frame schließen Java Basics - Anfänger-Themen 2
E Fenster schließen Java Basics - Anfänger-Themen 10
G Zweiten Frame schließen Java Basics - Anfänger-Themen 3
N ein Java-popUp mit einem Button schließen Java Basics - Anfänger-Themen 3
G Fenster schließen bei Klick auf Button Java Basics - Anfänger-Themen 4
R JDialog schließen ( nicht mit dispose()! ) Java Basics - Anfänger-Themen 14
L Ein JFrame schließen ohne System.exit(). Java Basics - Anfänger-Themen 4
E JDialog schließen Java Basics - Anfänger-Themen 9
G InputStream im finally-Block schließen Java Basics - Anfänger-Themen 7
G Rückgabe einer Methoden bei Schließen des Fensters Java Basics - Anfänger-Themen 3
G Java Fenster schließen Java Basics - Anfänger-Themen 5
G ActionListener - Aktionen vor/beim Schließen? Java Basics - Anfänger-Themen 9
S Schließen-Button bei awt.Frame Funktion zuweisen Java Basics - Anfänger-Themen 6
B Streams wollen scheinbar nicht schließen Java Basics - Anfänger-Themen 6
W JFrame kontrolliert schließen Java Basics - Anfänger-Themen 7
G Option vor Schließen eines JFrame Java Basics - Anfänger-Themen 9
D Methode vor Schließen eines JFrames ausführen Java Basics - Anfänger-Themen 5
D Schließen einer Datenverbindung mit schließen der Programms Java Basics - Anfänger-Themen 3
S fenster nach button schließen Java Basics - Anfänger-Themen 2
I Frame schließen, wenn anderes geöffnet wird Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben