Ficheros de Texto y Binarios: Diferencias y Usos en Java

En Java, los ficheros son una forma común de almacenar datos para su uso persistente. Existen dos tipos principales de ficheros: ficheros de texto y ficheros binarios. Aunque ambos sirven para almacenar información, se utilizan de manera distinta dependiendo de las necesidades de la aplicación.

En este artículo, exploraremos las diferencias clave entre estos tipos de ficheros, sus usos más comunes y cómo leerlos y escribirlos utilizando las clases específicas de Java.


Diferencias entre Ficheros de Texto y Ficheros Binarios

CaracterísticaFicheros de TextoFicheros Binarios
FormatoAlmacenan datos como texto legible por humanos.Almacenan datos en formato binario no legible directamente.
Ejemplos.txt, .csv, .xml, .json.jpg, .pdf, .docx, .dat
TamañoMás grandes debido al formato textual.Más pequeños y eficientes para datos complejos.
UsosConfiguraciones, datos estructurados, reportes.Imágenes, videos, bases de datos, archivos de software.
CompatibilidadFácil de transferir entre sistemas y programas.Necesita aplicaciones específicas para interpretación.

Clases de Java para Manejar Ficheros

Java proporciona clases dedicadas para trabajar con ficheros de texto y binarios, que se encuentran en el paquete java.io:

  • Ficheros de Texto: FileReader, BufferedReader, FileWriter, BufferedWriter.
  • Ficheros Binarios: FileInputStream, FileOutputStream, DataInputStream, DataOutputStream.

Manejo de Ficheros de Texto

Lectura de Ficheros de Texto

Para leer un fichero de texto, es común usar BufferedReader combinado con FileReader. Este enfoque permite leer línea por línea.

Ejemplo:

import java.io.*;

public class LeerTexto {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new FileReader("ejemplo.txt"))) {
            String linea;
            while ((linea = br.readLine()) != null) {
                System.out.println(linea);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Escritura en Ficheros de Texto

La clase BufferedWriter permite escribir texto de forma eficiente, especialmente en ficheros grandes.

Ejemplo:

import java.io.*;

public class EscribirTexto {
    public static void main(String[] args) {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("ejemplo.txt", true))) {
            bw.write("Este es un texto de ejemplo.");
            bw.newLine();
            System.out.println("Texto escrito correctamente.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Manejo de Ficheros Binarios

Lectura de Ficheros Binarios

Para leer datos binarios, se utiliza FileInputStream. Si los datos son más complejos, como tipos primitivos, se puede usar DataInputStream.

Ejemplo con FileInputStream:

import java.io.*;

public class LeerBinario {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("imagen.jpg")) {
            int byteLeido;
            while ((byteLeido = fis.read()) != -1) {
                System.out.print(byteLeido + " ");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Escritura en Ficheros Binarios

Para escribir datos binarios, se usa FileOutputStream. Para escribir tipos de datos más específicos, como int o double, se emplea DataOutputStream.

Ejemplo con FileOutputStream:

import java.io.*;

public class EscribirBinario {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("datos.bin")) {
            fos.write(65); // Escribe el byte 65 (letra 'A')
            fos.write(66); // Escribe el byte 66 (letra 'B')
            System.out.println("Fichero binario escrito correctamente.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Comparación Práctica: Texto vs Binario

Imagina que necesitas almacenar una lista de números. Aquí hay un ejemplo de cómo hacerlo en ambos formatos:

Almacenar como Texto

import java.io.*;

public class NumerosTexto {
    public static void main(String[] args) {
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("numeros.txt"))) {
            for (int i = 1; i <= 10; i++) {
                bw.write(String.valueOf(i));
                bw.newLine();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Almacenar como Binario

import java.io.*;

public class NumerosBinario {
    public static void main(String[] args) {
        try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("numeros.bin"))) {
            for (int i = 1; i <= 10; i++) {
                dos.writeInt(i);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

¿Cuál Deberías Usar?

Usa Ficheros de Texto si:

  • Los datos deben ser legibles y editables por humanos.
  • Necesitas compartir los datos fácilmente entre sistemas.

Usa Ficheros Binarios si:

  • Buscas eficiencia en almacenamiento y rendimiento.
  • Los datos son complejos, como imágenes o estructuras de datos.

Conclusión

Comprender las diferencias y aplicaciones de los ficheros de texto y binarios es esencial para elegir la mejor solución en tus proyectos. Java facilita trabajar con ambos tipos gracias a las clases específicas que proporcionan flexibilidad y potencia. Con práctica, podrás dominar el manejo de ficheros y aplicar estas habilidades en diversas situaciones. ¡Manos a la obra!

Deja un comentario

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

error: Content is protected !!

Descubre más desde Tomás González: Formador y Desarrollador Web

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad