1. Ficheros

- Creación de un objeto File
- Comprobaciones y Utilidades

2. Streams de Entrada

- Objetos FileInputStream

1. Apertura de un FileInputStream
2. Lectura de un FileInputStream
3. Cierre de FileInputStream
4. Ejemplo: Visualización de un fichero

- Objetos DataInputStream

1. Apertura y cierre de DataInputStream
2. Lectura de un DataInputStream

- Streams de entrada de URLs

1. Apertura de un Stream de entrada

3. Streams de Salida

- Objetos FileOutputStream

1. Apertura de un FileOutputStream
2. Escritura en un FileOutputStream
3. Cierre de FileOutputStream
4. Ejemplo: Almacenamiento de Información

- Streams de salida con buffer

1. Creación de Streams de salida con buffer
2. Volcado y Cierre de Streams de salida con buffer

- Streams DataOutput

1. Apertura y cierre de objetos DataOutputStream
2. Escritura en un objeto DataOutputStream
3. Contabilidad de la salida

4. Ficheros de Acceso Aleatorio

- Creación de un Fichero de Acceso Aleatorio
- Acceso a la Información
- Actualización de Información

Todos los lenguajes de programación tienen alguna forma de interactuar con los sistemas de ficheros locales; Java no es una excepción.

Cuando se desarrollan applets para utilizar en red, hay que tener en cuenta que la entrada/salida directa a fichero es una violación de seguridad de acceso. Muchos usuarios configurarán sus navegadores para permitir el acceso al sistema de ficheros, pero otros no.

Por otro lado, si se está desarrollando una aplicación Java para uso interno, probablemente será necesario el acceso directo a ficheros.

### Ficheros

Antes de realizar acciones sobre un fichero, necesitamos un poco de información sobre ese fichero. La clase File proporciona muchas utilidades relacionadas con ficheros y con la obtención de información básica sobre esos ficheros.

#### Creación de un objeto File

Para crear un objeto File nuevo, se puede utilizar cualquiera de los tres constructores siguientes:

        File miFichero;
        miFichero = new File( "/etc/kk" );

o

        miFichero = new File( "/etc","kk" );

o

        File miDirectorio = new File( "/etc" );
        miFichero = new File( miDirectorio,"kk" );

El constructor utilizado depende a menudo de otros objetos File necesarios para el acceso. Por ejemplo, si sólo se utiliza un fichero en la aplicación, el primer constructor es el mejor. Si en cambio, se utilizan muchos ficheros desde un mismo directorio, el segundo o tercer constructor serán más cómodos. Y si el directorio o el fichero es una variable, el segundo constructor será el más útil.

#### Comprobaciones y Utilidades

Una vez creado un objeto File, se puede utilizar uno de los siguientes métodos para reunir información sobre el fichero:

- Nombres de fichero

            String getName()
            String getPath()
            String getAbsolutePath()
            String getParent()
            boolean renameTo( File nuevoNombre )

- Comprobaciones

            boolean exists()
            boolean canWrite()
            boolean canRead()
            boolean isFile()
            boolean isDirectory()
            boolean isAbsolute()

- Información general del fichero

            long lastModified()
            long length()

- Utilidades de directorio

            boolean mkdir()
            String[] list()

Vamos a desarrollar una pequeña aplicación que muestra información sobre los ficheros pasados como argumentos en la línea de comandos, InfoFichero.java:

    import java.io.*;

    class InfoFichero {

        public static void main( String args[] ) throws IOException {
            if( args.length > 0 )
                {
                for( int i=0; i < args.length; i++ )
                    {
                    File f = new File( args[i] );
                    System.out.println( "Nombre: "+f.getName() );
                    System.out.println( "Camino: "+f.getPath() );
                    if( f.exists() )
                        {
                        System.out.print( "Fichero existente " );
                        System.out.print( (f.canRead() ?
                            " y se puede Leer" : "" ) );
                        System.out.print( (f.canWrite() ?
                            " y se puese Escribir" : "" ) );
                        System.out.println( "." );
                        System.out.println( "La longitud del fichero son "+
                            f.length()+" bytes" );
                        }
                    else
                        System.out.println( "El fichero no existe." );
                    }
                }
            else
                System.out.println( "Debe indicar un fichero." );
            }
        }

|  | ##### [Anterior] [Indice] [Siguiente]