Error en E/S de archivo

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();


    }

}

preguntado el 03 de mayo de 12 a las 18:05

Tienes que decirle a la gente lo que está mal. -

Tanto FileReader como FileWriter están subrayados y buscan generar una excepción. -

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. -

Cuando agrego excepciones o intentos/capturas, recibo errores en todas partes. -

1 Respuestas

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 or haz tu propia pregunta.