Solucione java.io.IOException: error de flujo cerrado
-
Razón que causa el error
java.io.IOException: flujo cerrado
-
Solucione el error
java.io.IOException: flujo cerrado
creando un nuevo flujo -
Solucione el error
java.io.IOException: flujo cerrado
moviendoclose()
fuera dewriteToFile()
Hoy, descubriremos la posible causa que genera el error java.io.IOException: flujo cerrado
al codificar en programación Java. También exploraremos dos posibles soluciones para corregir este error con la ayuda de ejemplos de código.
Razón que causa el error java.io.IOException: flujo cerrado
Código de ejemplo (que causa el error):
// 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
Entendamos el código para encontrar la razón que causa el error java.io.IOException: flujo cerrado
. Luego, saltaremos a su solución.
Este fragmento de código usa la clase FileWriter
que reside en el paquete java.io
y se usa para escribir datos en forma de caracteres
en el archivo especificado. Crea el archivo especificado si no existe en la ubicación dada y lo mantiene abierto.
Si el archivo ya está allí, el FileWriter
lo reemplazará.
Dentro del método main()
, llamamos al constructor FileWriter
para crear el archivo especificado en modo append
y luego llamamos al método writeToFile()
dos veces para escribir los datos dados en el archivo file.txt
.
En la primera llamada, el método writeToFile()
escribe los datos en file.txt
, vacía los datos de FileWriter
y lo cierra. Tenga en cuenta que hemos cerrado la transmisión llamando al método close()
.
En la segunda llamada, el objeto FileWriter
no puede encontrar el archivo donde se supone que debe escribir porque la transmisión está cerrada. Entonces, la segunda llamada al método writeToFile()
está causando este error.
Hay dos soluciones para corregir este error. Ambos se dan a continuación con ejemplos de código.
Solucione el error java.io.IOException: flujo cerrado
creando un nuevo flujo
La primera solución es crear una nueva secuencia siempre que queramos escribir en un archivo específico moviendo el objeto FileWriter
a la función writeToFile()
.
Código de ejemplo:
// 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
SALIDA (los datos en el archivo.txt
):
Hi! Mehvish Ashiq
Hello! Tahir Raza
Solucione el error java.io.IOException: flujo cerrado
moviendo close()
fuera de writeToFile()
La segunda solución es mover el método close()
fuera de la función writeToFile()
, lo que parece un buen enfoque en comparación con la Solución 1.
Código de ejemplo:
// 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
SALIDA (los datos en el archivo.txt
):
Hi! Mehvish Ashiq
Hello! Tahir Raza
Artículo relacionado - Java Error
- Arreglar Java fue iniciado por el código de salida devuelto = 1
- Arreglar JAVA_HOME no se puede determinar a partir del error de registro en R
- Arreglar java.io.IOException: No queda espacio en el dispositivo en Java
- Arreglar Java.IO.NotSerializableException en Java
- Arreglar Java.Lang.IllegalStateException de Android: no se pudo ejecutar el método de la actividad
- Arreglar Java.Lang.NoClassDefFoundError: No se pudo inicializar el error de clase