Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
-Tutoriales

I/O: Leer y Escibir


Como usar Streams de Ficheros

Los streams de ficheros son quizás los más fáciles de entender. Simplemente ponemos, el stream de ficheros --FileReader, FileWriter, FileInputStream, y FileOutputStream-- cada uno de lectura o escritura sobre un fichero del sistema de ficheros nativo.

Podemos crear un stream de fichero desde un nombre de fichero en el formato de un string, desde un objeto File, o desde un objeto FileDescriptor.

El siguiente programa Copy usa FileReader y FileWriter para copiar el contenido de un fichero llamado farrago.txt en otro fichero llamado outagain.txt.

import java.io.*;

public class Copy {
    public static void main(String[] args) throws IOException {
	File inputFile = new File("farrago.txt");
	File outputFile = new File("outagain.txt");

        FileReader in = new FileReader(inputFile);
        FileWriter out = new FileWriter(outputFile);
        int c;

        while ((c = in.read()) != -1)
           out.write(c);

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

Este programa es muy sencillo.

Abre FileReader sobre farrago.txt y abre FileWriter sobre outagain.txt.

El programa lee caracteres desde el reader mientras haya más entradas en el fichero de entrada.

Cuando la entrada se acada, el programa cierra tanto el reader como el writer.

Observa el código que usa el programa Copy para crear un FileReader.

File inputFile = new File("farrago.txt"); 
FileReader in = new FileReader(inputFile);

Este código crea un objeto File que representa el fichero nombrado en el sistema de ficheros nativo. File es una clase de utilidad proporcionada por java.io. Este programa usa este objeto sólo para construir un FileReader sobre farrago.txt.

Sin embargo, se podría usar inputFile para obtener información sobre farrago.txt, como su path completo.

Después de haber ejecutado el programa, deberíamos encontrar una copia exacta de farrago.txt en un fichero llamado outagain.txt en el mismo directorio. Aquí está el contenido del fichero:

So she went into the garden to cut a cabbage-leaf, to
make an apple-pie; and at the same time a great
she-bear, coming up the street, pops its head into the
shop. 'What! no soap?' So he died, and she very
imprudently married the barber; and there were
present the Picninnies, and the Joblillies, and the
Garyalies, and the grand Panjandrum himself, with the
little round button at top, and they all fell to playing
the game of catch as catch can, till the gun powder ran
out at the heels of their boots.

Samuel Foote 1720-1777

Recuerda que FileReader y FileWriter leen y escriben caracteres de 16 bits. Sin embargo, la mayoría del sistemas de ficheros nativos están basados en bytes de 8 bits. Estos streams codifican los caracteres según operan de acuerdo al esquema de codificación de caracteres por defecto. Podemos encontrar la codificación de caracteres por defecto usando System.getProperty("file.encoding"). Para especificar otra codificación, deberíamos construir un OutputStreamWriter sobre un FileOutputStream y especificarla. Para más información sobre la codificación de caracteres puedes ver la sección Internationalization.

Para curiosos, aquí tenemos otra versión de este programa, CopyBytes, que usa FileInputStream y FileOutputStream en lugar de FileReader y FileWriter.

 
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network