Error en E/S de archivo
Frecuentes
Visto 1,362 equipos
1
Acabo de empezar a hacer E/S de archivos andim usando un ejemplo de Murach's Se 6. Aquí está mi código. Me estoy perdiendo de algo. Sé que el código más adelante tiene más, pero como este es un ejemplo, debería funcionar, ¿verdad?
//Import import java.io.*; for use with the File I/O Methods.
import java.io.*;
public class MainApp
{
public static void main(String[] args)
{
//Create a file object.
File productFile = new File("product.txt");
//Open a buffered output stream to allow write to file operations.
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(productFile)));
out.println("java\tMurach's Beginning Java 2\t$49.99");
out.close();
BufferedReader in = new BufferedReader(
new FileReader(productFile));
String line = in.readLine();
System.out.println(line);
out.close();
}
}
//Respuesta
al agregar una excepción de lanzamiento al final de donde inicié el principal, este código funciona. Incluso el archivo txt products.txt está en la carpeta de clase como se esperaba. //Importación import java.io.*; para usar con los métodos de E/S de archivo.
import java.io.*;
public class MainApp
{
public static void main(String[] args) throws Exception
{
//Create a file object.
File productFile = new File("product.txt");
//Open a buffered output stream to allow write to file operations.
PrintWriter out = new PrintWriter(
new BufferedWriter(
new FileWriter(productFile)));
out.println("java\tMurach's Beginning Java 2\t$49.99");
out.close();
BufferedReader in = new BufferedReader(
new FileReader(productFile));
String line = in.readLine();
System.out.println(line);
out.close();
}
}
1 Respuestas
1
El problema es que varias de las llamadas al paquete java.io arrojan excepciones.
solución fácil: agregue lo siguiente a la firma de su método
public static void main(String[] args) throws IOException
solución casi tan fácil: agregue bloques try/catch/finally.
public static void main(String[] args)
{
//Create a file object.
File productFile = new File("product.txt");
//Open a buffered output stream to allow write to file operations.
PrintWriter out = null;
try {
out = new PrintWriter(
new BufferedWriter(
new FileWriter(productFile)));
out.println("java\tMurach's Beginning Java 2\t$49.99");
}
catch(IOException ex) {
// todo exception handling
System.out.println("ERROR! " + ex);
}
finally {
out.close();
}
BufferedReader in = null;
try {
in = new BufferedReader(
new FileReader(productFile));
String line = in.readLine();
System.out.println(line);
}
catch (IOException ex) {
// todo more exception handling
System.out.println("ERROR! " + ex);
}
finally {
in.close();
}
}
editar: sabes que estás tratando de llamar out.close()
¿dos veces? El segundo debe ser una llamada a in.close()
contestado el 03 de mayo de 12 a las 18:05
en el libro que estoy usando tiene out.close(); dos veces y el producto final con la ayuda de su sugerencia Throws Exception funciona. - pendo826
¡Creo que tener out.close() dos veces es un error tipográfico en su libro! - colin d
Sí, podría ser. Sin embargo, todavía no afecta la salida. Supongo que la transmisión se está reabriendo para el lector almacenado en búfer y que debe cerrarse nuevamente como algo cerrado. - pendo826
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java file-io or haz tu propia pregunta.
Tienes que decirle a la gente lo que está mal. - Hank Gay
Tanto FileReader como FileWriter están subrayados y buscan generar una excepción. - Pendo826
Bueno, agrega
throws Exception
a la declaración de su método. No es gran cosa. Por cierto, no administre las importaciones manualmente, ese es el trabajo de IDE. - Marko TopolnikCuando agrego excepciones o intentos/capturas, recibo errores en todas partes. - Pendo826