Las importaciones de FileWriter y BufferedWriter están "en conflicto" en JDK 7

Estoy usando JDK 7 y estoy tratando de realizar una operación simple de escritura en archivo con el siguiente código:

import java.io.BufferedWriter;
import java.io.FileWriter; // JAVA says this is conflicting...why?

FileWriter fw = new FileWriter("hello.txt");
BufferedWriter bw = new BufferedWriter(fw); // JAVA says this is an error and asks me to convert FileWriter to type Writer.

Estoy usando JDK 7 y así es como siempre he escrito en un archivo en Java, pero este es el primero en JDK 7 y no funciona.

¿Podría alguien explicar por qué?

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

¿Cual es el mensaje de error exacto? -

¿Tendría otra clase de FileWriter en el mismo paquete? -

@Puce, 2 errores, dice que import.java.io.FileWriter está en conflicto con java.io.BufferedWriter y me pide que cambie FileWriter fw a Writer fw. Sin embargo, siempre he lanzado un FileWriter en BufferedWriter sin problemas. Sin embargo, después de actualizar a JDK 7, esto sucede, por lo que me gustaría saber por qué. -

Esa no es la exacto mensaje de error. Copie la salida del mensaje del compilador y péguelo aquí. -

2 Respuestas

La única razón que se me ocurre es que tiene una clase llamada FileWriter en el mismo paquete que la clase, de la cual ha copiado los fragmentos de código. En ese caso, no se le permite importar una clase FileWriter de un paquete diferente, sino que debe usar el nombre calificado (java.io.FileWriter) en el propio código.

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

Cometí un error estúpido al nombrar mi archivo 'FileWriter.java'... gracias por señalarlo. - checo

¿Puedes hacer que la instancia fw sea Writer? p.ej

Writer fw = new FileWriter("hello.txt");
BufferedWriter bw = new BufferedWriter(fw);

Es una buena práctica usar la interfaz/abstracciones en lugar de implementaciones concretas.

FileWriter hereda de OutputStreamWriter que hereda de Writer.

Y más al punto el BufferedWriter constructor espera un Writer ejemplo.

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

¿Cambió algo para hacer cumplir esta nueva regla en JDK 7? - checo

"BufferedWriter BW = new BufferedWriter(new FileWriter("someFile.txt"));" funciona bien para mí. Solo para estar seguro, tiene el manejo de IOException, ¿verdad? ("intentar-atrapar" o "lanzar") - xenoro

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.