Beheben Sie den Fehler java.io.IOException: Stream Closed
-
Ursache für den Fehler
java.io.IOException: Stream closed
-
Beheben Sie den Fehler
java.io.IOException: Stream closed
, indem Sie einen neuen Stream erstellen -
Beheben Sie den Fehler
java.io.IOException: Stream closed
, indem Sieclose()
ausserhalb vonwriteToFile()
verschieben
Heute werden wir die mögliche Ursache herausfinden, die beim Codieren in der Java-Programmierung den Fehler java.io.IOException: Stream closed
generiert. Wir werden auch zwei mögliche Lösungen untersuchen, um diesen Fehler mit Hilfe von Codebeispielen zu beheben.
Ursache für den Fehler java.io.IOException: Stream closed
Beispielcode (der den Fehler verursacht):
// import libraries
import java.io.FileWriter;
import java.io.IOException;
// Test Class
public class Test {
// this method writes the given data into the specified file
// and closes the stream
static void writeToFile(
String greetings, String firstName, String lastName, FileWriter fileWriter) {
String customizedGreetings = greetings + "! " + firstName + " " + lastName;
try {
fileWriter.write(customizedGreetings + "\n");
fileWriter.flush();
fileWriter.close();
} catch (IOException exception) {
exception.printStackTrace();
}
} // end writeToFile() method
// main() method
public static void main(String[] args) throws IOException {
// creates a file in append mode and keeps it open
FileWriter fileWriter = new FileWriter("Files/file.txt", true);
// writeToFile() is called to write data into the file.txt
writeToFile("Hi", "Mehvish", "Ashiq", fileWriter);
writeToFile("Hello", "Tahir", "Raza", fileWriter);
} // end main()
} // end Test class
Lassen Sie uns den Code verstehen, um den Grund zu finden, der den Fehler java.io.IOException: Stream closed
verursacht. Dann werden wir zu seiner Lösung springen.
Dieses Code-Snippet verwendet die FileWriter
-Klasse, die sich im java.io
-Paket befindet und verwendet wird, um Daten in Zeichen
-Form in die angegebene Datei zu schreiben. Es erstellt die angegebene Datei, wenn sie am angegebenen Ort nicht vorhanden ist, und hält sie geöffnet.
Wenn die Datei bereits vorhanden ist, wird sie vom FileWriter
ersetzt.
Innerhalb der main()
-Methode rufen wir den FileWriter
-Konstruktor auf, um die angegebene Datei im append
-Modus zu erstellen, und rufen dann zweimal die writeToFile()
-Methode auf, um die angegebenen Daten in die file.txt
-Datei zu schreiben .
Beim ersten Aufruf schreibt die Methode writeToFile()
die Daten in die file.txt
, leert die Daten des FileWriter
und schliesst diese. Beachten Sie, dass wir den Stream geschlossen haben, indem wir die Methode close()
aufgerufen haben.
Beim zweiten Aufruf findet das Objekt FileWriter
die Datei nicht, in die es schreiben soll, weil der Stream geschlossen ist. Der zweite Aufruf der Methode writeToFile()
verursacht also diesen Fehler.
Es gibt zwei Lösungen, um diesen Fehler zu beheben. Beide sind unten mit Codebeispielen angegeben.
Beheben Sie den Fehler java.io.IOException: Stream closed
, indem Sie einen neuen Stream erstellen
Die erste Lösung besteht darin, einen neuen Stream zu erstellen, wenn wir in eine bestimmte Datei schreiben möchten, indem wir das Objekt FileWriter
in die Funktion writeToFile()
verschieben.
Beispielcode:
// import libraries
import java.io.FileWriter;
import java.io.IOException;
// Test class
public class Test {
// this method writes the given data into the specified file
// and closes the stream
static void writeToFile(String greetings, String firstName, String lastName) throws IOException {
FileWriter fileWriter = new FileWriter("Files/file.txt", true);
String customizedGreetings = greetings + "! " + firstName + " " + lastName;
fileWriter.write(customizedGreetings + "\n");
fileWriter.flush();
fileWriter.close();
} // end writeToFile()
// main()
public static void main(String[] args) {
// writeToFile() is called to write data into the file
try {
writeToFile("Hi", "Mehvish", "Ashiq");
writeToFile("Hello", "Tahir", "Raza");
} catch (IOException e) {
e.printStackTrace();
}
} // end main()
} // end Test class
AUSGABE (die Daten in der file.txt
):
Hi! Mehvish Ashiq
Hello! Tahir Raza
Beheben Sie den Fehler java.io.IOException: Stream closed
, indem Sie close()
ausserhalb von writeToFile()
verschieben
Die zweite Lösung verschiebt die Methode close()
aus der Funktion writeToFile()
, was im Vergleich zu Lösung 1 ein guter Ansatz zu sein scheint.
Beispielcode:
// import libraries
import java.io.FileWriter;
import java.io.IOException;
// Test Class
public class Test {
// this method writes the given data into the specified file
static void writeToFile(
String greetings, String firstName, String lastName, FileWriter fileWriter) {
String customizedGreetings = greetings + "! " + firstName + " " + lastName;
try {
fileWriter.write(customizedGreetings + "\n");
fileWriter.flush();
} catch (IOException exception) {
exception.printStackTrace();
}
} // end writeToFile()
// closes the stream
static void cleanUp(FileWriter fileWriter) throws IOException {
fileWriter.close();
} // end cleanUp()
// main()
public static void main(String[] args) throws IOException {
// create the file in the append mode and keep it open
FileWriter fileWriter = new FileWriter("Files/file.txt", true);
// writeToFile() is called to write data into the file.txt
writeToFile("Hi", "Mehvish", "Ashiq", fileWriter);
writeToFile("Hello", "Tahir", "Raza", fileWriter);
// close the stream
cleanUp(fileWriter);
} // end main()
} // end Test class
AUSGABE (die Daten in der file.txt
):
Hi! Mehvish Ashiq
Hello! Tahir Raza
Verwandter Artikel - Java Error
- Adresse wird bereits verwendet JVM_Bind-Fehler in Java
- Android Java.Lang.IllegalStateException behoben: Methode der Aktivität konnte nicht ausgeführt werden
- Ausnahme im Hauptthread Java.Lang.ClassNotFoundException in IntelliJ IDEA
- Ausnahme im Hauptthread Java.Lang.NoClassDefFoundError
- Beheben Sie das Problem, dass Java nicht installiert werden kann. Es gibt Fehler in den folgenden Schaltern
- Beheben Sie den Fehler `Es wurde keine Java Virtual Machine gefunden` in Eclipse