Download ORDENAR FICHERO JAVA En un editor de texto (bloc de notas por

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();
}
}
}
}
ORDENAR FICHERO
JAVA
~4~
EJECUCIÓN DEL PROGRAMA EN LA CONSOLA DE WINDOWS
Dentro de la carpeta bin de nuestro proyecto (una vez que tenemos compilado nuestro proyecto (con run))
ponemos la llamada
Java paquete.Clase argumentos
En este caso para que se ejecute ponemos la carpeta con la aplicación en C:
La carpeta se llama OrdenarFichero y dentro de la cual en la carpeta bin tenemos los archivos Datos.txt y
DatosSalida.txt (los meto dentro de bin para que al llamarlos en la consola no tenga que poner toda la ruta de cada
archivo, sino tan solo el nombre por encontrarme ya en esa carpeta.