Practica 6 de Programación

Anuncio
Practica 4 de Programación
Flujos
Mandar por email (con asunto Programación P4) todos los ficheros en una
carpeta comprimida (.zip o .rar) cuyo nombre es el NIA o los NIAs de los
estudiantes. La fecha de entrega es el Lunes 26 de Mayo 2007 a las 23:59.
El objetivo de esta práctica es leer desde un flujo de entrada el texto etiquetado
almacenado en un fichero (input.txt) y escribir los resultados a un flujo de
salida. El contenido de input.txt es el etiquetaje del siguiente texto (fuente: El
periódico online, 08/05/2006):
Dinou persones han mort en els 16 accidents de trànsit registrats durant el cap de setmana,
segons la Direcció General de Trànsit (DGT). En aquests mateixos sinistres, 12 persones han
resultat ferides greus, i 11 més, lleus.
Divendres hi va haver dos accidents, en què van morir dues persones i una va resultar ferida
greu, mentre que dissabte van morir 11 persones en nou sinistres amb 10 ferits greus i vuit de
lleus. Diumenge sis persones van morir en sis accidents, en què també hi va haver un ferit greu
i tres de lleus.
Actividad 1:
En esta actividad vamos a leer el análisis morfológico del artículo desde el flujo
de entrada estándar, línea por línea, usando el método readLine() de
BufferedReader, pero redirigiendo el flujo de entrada estándar con “<” desde la
línea de comandos, para así poder leer el análisis desde un fichero en vez de
entrar los datos con el teclado.
Para hacer esta actividad, hay que haber probado e entendido los programas
SystemIn.java, InStream.java (o Sumar.java) de la clase de teoría.
a) Desde el main de ProcessText abrir un flujo de tipo BufferedReader a partir
del flujo de entrada estándar System.in (como en el programa SystemIn.java)
y llamar a processText(BufferedReader br). No olvidar cerrar los flujos abiertos
después de la llamada a processText.
b) Completar el método processText(BufferedReader br). Ahora en vez de
coger un String como argumento de entrada como en las practicas anteriores y
procesarlo con un StringTokenizer, el método processText coge un flujo de tipo
BufferedReader y procesa las líneas leídas del flujo con readLine()),
imprimiendo los resultados a la pantalla. Ver como se leen líneas del
BufferedReader en bucle dentro de InStream.java o Sumar.java.
c) Probar el programa desde una ventana cmd con input.txt que contiene el
análisis morfológico del texto de arriba, redirigiendo el flujo de entrada estándar
(con el operador de redirección “<”) para que se lea el archivo. Dar una
impresión de pantalla para mostrar la ejecución.
d) Redirigir el flujo de salida estándar hacia un fichero con el operador de
redirección “>” en la línea de comandos, para que todos los System.out.println
se hagan en un fichero en vez de la pantalla. Dar una impresión de pantalla e
adjuntar el fichero creado.
Actividad 2:
Hacemos lo mismo que en la actividad 1, pero leyendo un fichero e escribiendo
a un fichero sin usar operadores de redirección en la ventana cmd.
Para hacer esta actividad, hay que haber probado e entendido los programas
InStream.java e OutStream.java de la clase de teoría.
a) Completar el método imprimir(FileWriter fw) de Morpho. En vez de escribir al
flujo de salida estándar como imprimir(), este método escribe al flujo de salida
de tipo FileWriter.
b) Completar el método imprimir(FileWriter fw) de Word. En vez de escribir al
flujo de salida estándar como imprimir(), este método escribe al flujo de salida
de tipo FileWriter. El método llama al método imprimir(FileWriter fw) de Morpho.
c) Completar el método processText(BufferedReader br,FileWriter fw) de
ProcessText, que, como processText(BufferedReader br), lee el análisis
morfológico desde un flujo de tipo BufferedReader, pero imprime el análisis
compacto a un flujo de tipo FileWriter. Este método llama a
imprimir(FileWriter fw) de Word.
d) Completar el método leerEscribir(String input,String output) de ProcessText,
que abre un flujo de tipo BufferedReader desde el fichero con camino completo
input, e abre un flujo de tipo FileWriter desde el fichero con camino completo
output. El método llama a processText(BufferedReader br,FileWriter fw). No
olvidar cerrar los flujos después de la llamada.
e) En el main, recoger los ficheros de entrada y de salida como argumentos de
línea de comandos y llamar a leerEscribir(String input,String output). Probar el
programa.
Descargar