martes, 17 de noviembre de 2015

ARCHIVOS

Los programas usan variables para almacenar información: los datos de entrada, los resultados calculados y valores intermedios generados a lo largo del cálculo. Toda esta información es efímera: cuando acaba el programa, todo desaparece. Pero, para muchas aplicaciones, es importante poder almacenar datos de manera permanente.

Cuando se desea guardar información más allá del tiempo de ejecución de un programa lo habitual es organizar esa información en uno o varios ficheros almacenados en algún soporte de almacenamiento persistente. Otras posibilidades como el uso de bases de datos utilizan archivos como soporte para el almacenamiento de la información.

Antes de proceder al estudio de las clases que describen la lectura y escritura veamos la clase File:

LA CLASE FILE: Proporciona información acerca de los archivos, de sus atributos, de los directorios,etc. Se usa para crear un archivo.

Los archivos también son llamados ficheros y existen de dos tipos:

ARCHIVO DE TEXTO

Los archivos de texto plano son aquellos que están compuestos únicamente por texto sin formato,solo caracteres. estos caracteres se pueden codificar de distintos modos dependiendo de la lengua usada. Se les conoce también como archivos de texto llano o texto simple por carecer de información destinada a generar formatos y tipos de letra.

Lectura/Escritura

Los pasos para leer y escribir en disco son los siguientes:
  1. Para escribir: Se crean dos objetos de las clases FileReader y FileWriter, llamando a los respectivos constructores a los que se les pasa los nombres de los archivos o bien, objetos de la clase File, respectivamente.
  2. Para leer: Se realiza mediante read los caracteres del flujo de entrada, hasta llegar al final(la función final devuelve entonces -1, y se escribe dichos caracteres en el flujo de salida mediante write.
IMPORTANTE: Deben cerrarse los flujos de lectura y escritura llamando a sus respectivas funciones close() en bloques try...catch.


package blogger;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;

public class Archivo_de_texto {
    private File f;
    
    public void crearArchivo(){
        try {
            
            f = new File ("Archivos/archivo_plano.txt");
            
            if(!f.exists()){
                f.createNewFile();
            }
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }      
    }
    
    public void escribirArchivo(){
        try {
            FileWriter fw = new FileWriter(f);
            fw.write("Mi primer archivo plano");
            fw.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
   
    }
    public void leerArchivo (){
        try {
            FileReader fr = new FileReader(f);
            BufferedReader br = new BufferedReader(fr);
            String linea = null;
            while ((linea=br.readLine()) != null) {                
                System.out.println(linea);
            }
            br.close();
            fr.close();
            
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}



ARCHIVO BINARIO

Un archivo binario es una archivo informático que contiene información de cualquier tipo,codificada en forma binaria para el propósito de almacenamiento y procesamiento de ordenadores.

Lectura/Eescritura

  1. Para escribir: Creamos un flujo de salida de disco, pasándole el nombre del archivo en disco un objeto de la clase File.
FileOutputStream fos = new FileOutputStream("media.obj");

El flujo de salida ObjectOutputStream es el que procesa los datos y se ha de vincular a un objeto fos de la clase FileOutputStream.

ObjectOutputStream oos= = new ObjectOutputStream(fos);

     2.Para leer: Creamos un flujo de salida de disco, pasándole el nombre del archivo en disco un objeto de la clase File.

FileInputStream fis = new FileInputStream("media.obj");

El flujo de entrada ObjectOutputStream es el que procesa los datos y se ha de vincular a un objeto fis de la clase FileInputStream.:

ObjectInputStream ois= = new ObjectInputStream(fis);

IMPORTANTE: Deben cerrarse los flujos de lectura y escritura llamando a sus respectivas funciones close() en bloques try...catch y las clases involucradas deben SERIALIZARSE.

Ejemplo: Crearemos un archivo binario que contenga un ArrayList de estudiantes:



package blogger;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Archivo_Binario {
    private File f;
    
    public void crearArchivoBinario(){
            try {
                f= new File("Archivos/archivo_binario.txt");
               if(!f.exists()){
                f.createNewFile();
            }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
    }    
    
    public void escribir_ArchivoBinario(){
        try {
            List  estudiantes = new ArrayList ();
            Estudiante e1 = new Estudiante("Jorge", "75426598", 18, "1234567", "Sistemas");
            Estudiante e2 = new Estudiante("Martha", "7757856", 16, "1745863", "Zootecnia");
            Estudiante e3 = new Estudiante("Martin", "7786626", 22, "1234567", "Ambiental");
           
            estudiantes.add(e1);
            estudiantes.add(e2);
            estudiantes.add(e3);
            
            FileOutputStream fos = new FileOutputStream(f);
            ObjectOutputStream oos= new ObjectOutputStream(fos);
            oos.writeObject(estudiantes);
            oos.close();
            fos.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
    
    public void leerArchivoBinario(){
        try {
            FileInputStream fis = new FileInputStream(f);
            ObjectInputStream ois = new ObjectInputStream(fis);
            ois.close();
            fis.close();
            
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }
}

No hay comentarios:

Publicar un comentario