Download ORDENAR FICHERO JAVA En un editor de texto
Document related concepts
no text concepts found
Transcript
ORDENAR FICHERO JAVA ~1~ En un editor de texto (bloc de notas por ejemplo) escribir 4 o 5 líneas y guardar el documento con el nombre Datos.txt Nuestra aplicación va a realizar lo siguiente: 1. 2. 3. 4. 5. El nombre de los ficheros se pasa por línea de comandos (String[] args) Abrir el fichero para leer sus líneas. Almacenar las líneas en una LinkedList<String> Ordenar la lista (sort) Escribir en otro fichero las líneas ordenadas Dentro del paquete de java java.io.* tenemos un montón de clases del tipo: InputStream: Para leer flujos de bytes Outputstream: Para escribir en flujos de bytes Reader: Para leer flujos de caracteres. Writer: Para escribir flujos de caracteres En nuestro caso lo más idóneo es usar FileReader. Éste nos permite leer tan solo por caracteres. Por tanto vamos a tener que ayudarnos también de BufferedReader para que tome los caracteres del FileReader y así poder leer del fichero línea a línea. ORDENAR FICHERO ~2~ JAVA EXCEPCIONES. Son un mecanismo para gestionar todas esas situaciones que están fuera del control de nuestro programa. Para controlarlas utilizamos por ejemplo el try y catch que es del siguiente modo: try { //ejecución normal del programa } catch (FileNotFoundException e) { //operaciones en caso de error } catch (IOException e) { //operaciones en caso de error } catch (Exception e) { //operaciones en caso de error } CODIGO import import import import import import import import import import java.io.BufferedReader; java.io.File; java.io.FileNotFoundException; java.io.FileReader; java.io.FileWriter; java.io.IOException; java.io.PrintWriter; java.util.Collections; java.util.Iterator; java.util.LinkedList; /** * @author Nessy * */ public class OrdenarFichero { /** * @param args Ficheros de entrada y de salida public static void main(String[] args) { */ if (args.length != 2) { System.err.println("Numero de argumentos incorrecto"); System.exit(1); } else { File f_entrada = new File(args[0]); File f_salida = new File(args[1]); LinkedList<String> lista = new LinkedList<String>(); try { /* Creamos un FileReader para leer del fichero en forma de Bytes */ FileReader fr = new FileReader(f_entrada); /* Creamos un BufferedReader a partir del FileReader para poder leer caracteres */ BufferedReader br = new BufferedReader(fr); ORDENAR FICHERO JAVA ~3~ /* Creamos un FileWriter para escribir en el fichero en forma de Bytes */ FileWriter fw = new FileWriter(f_salida); /* Creamos un PrintWriter a partir del FileWriter para poder escribir caracteres */ PrintWriter pw = new PrintWriter(fw); /* Vamos leyendo linea a linea hasta llegar al final del fichero (null) */ String linea = null; while ((linea = br.readLine()) != null){ lista.add(linea); } /* Ordenamos la lista con el método sort de la clase Collections */ Collections.sort(lista); /* Escribimos en el fichero de salida */ Iterator iter = lista.iterator(); String cadena; while (iter.hasNext()) { cadena = (String) iter.next(); pw.println(cadena); System.out.println(cadena); } /* Cerramos los flujos de los ficheros */ br.close(); fr.close(); pw.close(); fw.close(); } catch (FileNotFoundException e) { //e.printStackTrace(); System.err.println("No se ha encontrado el fichero"); } catch (IOException e) { e.printStackTrace(); } } } }