Una duda "existencial"

Hola
Llevo una semana haciendo cosillas de Java, porque tengo que aprender "a marchas forzadas".
El flujo de entrada/salida es lo que me tiene muy preocupado. Más o menos entiendo que se crean variables de flujo para los Stream y todo eso, pero me hago un lío cuando quiero leer ficheros.
Siendo más concretos: supongamos que yo quiero hacer un prog que pida el nombre de un fichero al usuario (o la ruta del mismo) y lo muestre por pantalla. Así de sencillo, pero en vez de utilizar los métodos Read y Write, prefiero usar InputStream y OutputStream, que me parece que es mejor para el tratamiento de String.
¿Cómo sería el código del mismo?
Muchas gracias

1 Respuesta

Respuesta
1
Vale, vamos a ver... por ejemplo, si quieres hacer que pueda introducir el usuario el nombre del fichero (o su ruta) por teclado, pondrías lo siguiente:
try{
BufferedReader b=new BufferedReader (new InputStreamReader(System.in));
BufferedWriter b2=new BufferedWriter(new OutputStreamWriter(System.out));
System.out.print("Escribe algo:");
String s=b.readLine();
//b.close();
b2.write("Lo que he leido es "+s+"\n");
b2.flush();
//b2.close();
}
catch(Exception e){
System.out.println("Error");
e.printStackTrace();
}
Como verás para leer y para escribir por pantalla he utilizado los objetos BufferedWriter y BufferedReader, que son adecuados para trabajar con String y muy sencillos de utilizar. Para conseguir leer/escribir un fichero, sólo tendrías que cambiar el parámetro que le pasas al constructor de BufferedReader/Writer, poniendo lo siguiente:
BufferedReader lecturaFile=new BufferedReader(new FileReader(nombreFichero));
irías leyendo con lecturaFile.readLine() comprobando si lecturaFile.available()!=-1 (es decir, que aún queda algo de fichero) y ya está, o bien vas imprimiendo lo que vas leyendo por pantalla o bien lo almacenas en algo (array, Vector,...). Después, cierras el flujo de entrada con lecturaFile.close(); y ya está. Para escribir lo que hayas leido en un fichero, sólo tienes que hacer:
BufferedWriter escrituraFichero=new BufferedWriter(new FileWriter(nombreFichero));
Y vas escribiendo cada línea con escrituraFichero. write(string); hasta que ya no tengas nada más que escribir, y luego haces escrituraFichero. Flush() (por si queda algo que escribir que esté en el flujo) y escrituraFichero. Close() para cerrar el flujo de escritura y ya está...
Espero que te haya quedado más o menos claro, sé que está un poco enmarañada la explicación pero no he tenido mucho tiempo de dejarlo bonito, espero que lo entiendas. Si te queda alguna duda o quieres seguir preguntando cosas del mismo tema (u otros), no dudes en volver a preguntar, suerte con tu aplicación.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas