lunes, mayo 19, 2008

Codigo Util para Java I I - Archivos de Texto

Tareas básicas al trabajar en java para la Universidad serian una como, leer un archivo, recorrerlo linea por línea, contar el numero de lineas, hacer que cada linea tenga una serie de registros, guardar datos, recuperar... cosas asi...

No voy a extenderme en explicar el codigo que está dentro de los metodos, sino mas bien, la utilizacion de la clase, ya que tiene una forma especial de usarse, que si no se hace correctamente no funcionará:

Nombre del fichero: Archivos.java


import java.io.*;
import java.util.*;


public class Archivos {
private File archivo;
private FileReader in;
private FileWriter out;
private FileOutputStream fos;
private ObjectOutputStream oos;
private FileInputStream fis;
private ObjectInputStream ois;
private static Archivos archivos;


public Archivos() {
super();

}

public static Archivos getInstance() {
if(archivos == null){
archivos = new Archivos();
}
return archivos;
}

public synchronized void escribirArchivo(String ruta, String contenido) throws IOException {
getInstance();
File file = new File(ruta);
out = new FileWriter(file.getAbsolutePath(), true);
out.write(contenido);
out.close();
}

public synchronized String leerArchivo(String ruta) throws IOException, FileNotFoundException {
StringBuffer cadena = new StringBuffer();
in = new FileReader(ruta);

int c = 0;
while((c = in.read()) != -1) {
cadena.append((char) c);
}

return cadena.toString();
}

public synchronized void copiarArchivo(String origen, String destino, boolean annadir) throws IOException, FileNotFoundException {
File archivoOrigen = new File(origen);
File archivoDestino = new File(destino);

in = new FileReader(archivoOrigen.getAbsolutePath());
out = new FileWriter(archivoDestino.getAbsolutePath(), annadir);

int caracter = 0;
while ((caracter = in.read()) != -1) {
out.write(caracter);
}

in.close();
out.close();
}

public synchronized void guardarObjeto(String ruta, Object objeto) throws IOException {
fos = new FileOutputStream(ruta);
oos = new ObjectOutputStream(fos);
oos.writeObject(objeto);
fos.flush();
}

public synchronized Object recuperarObjeto(String ruta) throws IOException, FileNotFoundException, ClassNotFoundException {
fis = new FileInputStream(ruta);
ois = new ObjectInputStream(fis);
return ois.readObject();
}
}






Sencillamente hacen una instancia de la clase (es obligatorio), se llama a el metodo que lo instancia (cada vez que se va a abrir un nuevo archivo) y luego se procede a utilizar los metodos propios de la clase


Archivos miArchivo = new Archivos();
miArchivo = Archivos.getInstance();
try{

String ruta = "c:\salida.txt";
String contenido = ES.leer("Digite el texto a Continuacion: \n");
miArchivo.escribirArchivo(ruta,contenido);

ES.imprimir("\nContenido del Archivo: \n\n" + miArchivo.leerArchivo(ruta));
}catch(Exception e){
ES.imprimir(e)
}



Utilizando la clase de la publicación anterior, podemos de una forma mas sencilla escribir y leer hacia un archivo desde nuestro codigo.


Saludos, y espero que sea de utilidad

8 comentarios:

Alejandro Trejos C. dijo...

Diay, y el pase de la antorcha?

Absulit dijo...

la antorcha está en logico.absulit.net

Capitán Melcocha dijo...

Mae, pues de programación ahí si que le quedo debiendo un pichazo, pero bueno, mae, que toque que tengás conocimientos tan avanzados.

No crea, a veces veo programando al compa que vive en el apartamento y de verdad que ustedes me limpian un pichazo.
Saludos, Batman!!

aquiles dijo...

MAe, VBS (yo se que no es abierto) pero tiene unos objetos nativos para manejo de archivos....
el Scripting.FileSystemObject que tiene TextStream, Drive, File, Folder entre otros...

Lo tuanis es que si los usa en un archivo.vbs le funcan local para loq ue le de la gana, y si los usa en IIS le funcan para escribir y leer en el server!

A un cliente le usé esl objeto en unos robots que escriben un archivo de texto separado por coma, de unas piezas que prueban... entonces con el Scripting.FileSystemObject, leo el archivo, lo parseo, y por ADO lo mando a un SQL Server... vieras que tuanis!

Absulit dijo...

Curiosamente java tambien tiene esa capacidad con su codigo, ademas que es portable... solo se necesita la maquina virtual en cada sistema operativo... pero la vara no es criticar lenguajes, la vara es sacar el mayor provecho de ellos...
mi interes con el Open Source es que está al alcance de cualquiera... mi critica con java es q lleva tantos años, manejado por tantos developers y no ha llegado ni a la version 2, tambien es demasiado extenso... asi q la vara es saber programar, sin conocer lenguajes, que para saber terminos, un manual de referencia y ya...

gracias por la visita compas

Anónimo dijo...

Darin ist etwas auch die Idee gut, ist mit Ihnen einverstanden. levitra bestellen levitra wirkungseintritt [url=http//t7-isis.org]viagra kaufen[/url]

Anónimo dijo...

Bravo, me parece esto la idea magnГ­fica http://nuevascarreras.com/comprar-cialis-es/ cialis dosis recomendada Che continua a non arrivare. [url=http://nuevascarreras.com/tag/cialis-generico/ ]comprar cialis en mexico [/url]

Anónimo dijo...

Te comiste un ';'

}catch(Exception e){
ES.imprimir(e)
}