Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Ejercicios / Java / Java / Proyectos / Archivos binarios en Java (Lectura/Escritura)

Archivos binarios en Java (Lectura/Escritura)

Autor jc mouse martes, abril 17, 2012

Según Santa Wikipedia: “Un archivo binario es un archivo informático que contiene información de cualquier tipo codificada en binario para el propósito de almacenamiento y procesamiento en ordenadores. “

Para escribir y leer archivos binarios desde java se utiliza ObjectOutputStreamObjectInputStream respectivamente, pero el objeto que guardemos debe ser serializable, esto quiere decir que se puedan guardar como datos, por ejemplo en la siguiente clase “MiClase” se implementa SERIALIZABLE, ademas de utilizarse la variable serialversionUID, esta variable sirve para identificar el objeto guardado en archivo, más o menos como una llave de identificación, veremos un ejemplo de esto más adelante.

import java.io.Serializable;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class MiClase implements Serializable {

    //Esta variable es para identificar el archivo cuando lo vayamos a reconstruir del *.DAT
    private static final long serialVersionUID = 666L;
    //Para guardar el nombre de objeto de la clase
    private String Nombre_Objeto="";

    /* Constructor de la clase */
    public MiClase(String Nombre){
        this.Nombre_Objeto = Nombre;
    }

    public String getNombreObjeto()
    {
        return this.Nombre_Objeto;
    }
    //algunos metodos
    public int Suma(int a , int b)
    {
        return a + b;
    }

    public int Resta(int a , int b)
    {
        return a - b;
    }    
}

Una vez que tenemos la clase serializable, debemos crear una clase para guardar y leer este archivo binario, la siguiente clase la llame BITS (puede ser cualquier otro nombre), esta clase cuenta con dos métodos (escribir/leer)  los cuales no creo que deba explicar para que sirven :/

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/**
 * @web https://www.jc-mouse.net
 * @author Mouse
 */
public class bits {

    private String ruta_archivo = "e:/temporal/archivo.dat";

    public void escribir()
    {
        try {
            //Objeto a guardar en archivo *.DAT
            MiClase clase = new MiClase("Mi Objeto en DAT");
            //Se crea un Stream para guardar archivo
            ObjectOutputStream file = new ObjectOutputStream(new FileOutputStream( this.ruta_archivo ));
            //Se escribe el objeto en archivo
            file.writeObject(clase);
            //se cierra archivo
            file.close();
        } catch (IOException ex) {
            System.out.println(ex);
        }
    }

    public void leer()
    {
        try {
            //Stream para leer archivo
            ObjectInputStream file = new ObjectInputStream(new FileInputStream( this.ruta_archivo ));
            //Se lee el objeto de archivo y este debe convertirse al tipo de clase que corresponde
            MiClase clase = (MiClase) file.readObject();
            //se cierra archivo
            file.close();
            //Se utilizan metodos de la clase asi como variables guardados en el objeto
            System.out.println("El objeto se llama:" +  clase.getNombreObjeto() );
            String res = String.valueOf(clase.Suma(234, 12)) ;
            System.out.println("La suma de 3 + 12 es igual a : " + res);
        } catch (ClassNotFoundException ex) {
             System.out.println(ex);
        } catch (IOException ex) {
             System.out.println(ex);
       }
    }

}

Implementamos primero el metodo escribir y vemos que pasa:

    public static void main(String[] args) {
        bits b = new bits();
        b.escribir();        
    }

Nos creara un archivo *.dat en la ruta que esta en la variable “ruta_archivo”, el contenido de este archivo sera la clase “MiClase”, si lo abres con un editor hexadecimal, podras ver como está guardado ese objeto en el archivo binario.

Binary java Netbeans

 

Ahora implementamos el metodo leer y vemos que pasa:

    public static void main(String[] args) {
        bits b = new bits();
        b.leer();     
    }

En consola podremos el resultado de la ejecución, vemos como recuperamos la variable guardada, así como también hacemos uso de uno de los métodos de la clase

run:
El objeto se llama:Mi Objeto en DAT
La suma de 3 + 12 es igual a : 246

serialversionUID

Ahora veremos que pasa cuando la variable “serialversionUID” no es el mismo, intenta cambiando nuestra variable que es “666L” por otra cualquier, nose “777L” y ejecuta el metodo leer(), obtendremos un error:

java.io.InvalidClassException: binarios.MiClase; local class incompatible: stream classdesc serialVersionUID = 666, local class serialVersionUID = 777

Este error te indica que al momento de leer y tratar de restaurar nuestra clase, hace una comparación del SeriaVersion y como no son iguales, da por hecho que el archivo es incorrecto o esta dañado y no lo restaura

eso es todo 🙂 bájate el proyecto “Archivos Binarios Java

 

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Introducción a la edición de imágenes con ImageMagick

Introducción a la edición de imágenes con ImageMagick

ImageMagick es un software de código abierto multiplataforma que contiene una serie de herramientas para leer, mostrar,...

JavaScript: Script y Web para generar banderas ondeando

JavaScript: Script y Web para generar banderas ondeando

Online Flag Waver es una páginas web con la que podemos generar banderas ondeando con la textura que elijamos ya sea des...

Netbeans “Problemas de Referencia”

Netbeans “Problemas de Referencia”

Cuando nos bajamos un proyecto de internet o cuando nos pasan un código de otra pc (que técnicamente viene siendo lo mis...

Blog MVC – Iniciando el proyecto [p2]

Blog MVC – Iniciando el proyecto [p2]

Segunda parte del tutorial [Crea tu blog con el patrón MVC y php]. En esta 2da parte toca ver lo que es la creación del...

Yachaywasi – Crea exámenes tipo test para android

Yachaywasi – Crea exámenes tipo test para android

Yachaywasi versión 3.1 es una aplicación para android que te permite crear, editar y realizar exámenes tipo test cómodam...

Google Circles en java

Google Circles en java

En este tutorial crearemos el botón de Google+ Google Circles para una interfaz de escritorio 🙂 si no sabes lo que son e...

7 comentarios en “Archivos binarios en Java (Lectura/Escritura)”

  1. Leon dice:

    ¡Excelente guía! Me fue de mucha ayuda
    Muchas gracias 😀

  2. Efra dice:

    grasias men me ayudo

  3. rasengandav dice:

    Muy buuen aporte aora checo que tal va

  4. compilex dice:

    Hoy me haz ayudado en 5 dudas, asi que:

    int i=0
    while(i<5)
    {
    System.out.println("MUCHAS GRACIAS");
    i+=1;
    }

    Adios…

    1. Mouse dice:

      original 🙂 gracias

  5. pedro dice:

    grsias

  6. Alberto Paniagua dice:

    Estimado amigo Mouse emprendedor, mil gracia por este muy buen aporte, me sirvió de mucho.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

MyBatis es un framework de persistencia Java que se encarga de mapear sentencias SQL y procedimientos almacenados a part...

Webcam Capture es un API  que permite usar una cámara web incorporada o externa directamente desde código Java utilizand...

im4java es una interfaz pura de Java para la línea de comandos de ImageMagick. La interfaz de la línea de comandos de IM...

En un post anterior conocimos una herramienta Open Source con un conjunto de herramientas para el trabajo con imágenes e...

Herramientas

Generador de Enlaces a Whatsapp