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