Clases FileInputStream y FileOutputStream para ficheros binarios en Java

Hola a todos, hoy os explicare como usar las clases FileInputStream y FileOutputStream para ficheros binarios en Java.

Como hemos visto hasta ahora, podemos usar los ficheros de texto para almacenar o leer información, pero su mayor desventaja es que al ser legible, puede ser modificado por terceras personas.

Por ejemplo, cuando vemos un fichero que tiene una extensión concreta, solo puede leerse con un programa especifico. Si abres un documento Word desde un bloc de notas, veras muchos caracteres no legibles, esto es porque Word sabe como leer esos caracteres.

ejemplo fichero binario

La forma de crear un fichero binario es igual que vimos con FileReader y FileWriter, veamos un ejemplo:

FileOutputStream fos=new FileOutputStream("D:\\fichero_bin.ddr");
FileInputStream fis=new FileInputStream("D:\\fichero_bin.ddr");

Vamos a ver un ejemplo de como escribir en el fichero, usaremos el método write con el que podemos usar un numero que corresponderá a la tabla ASCII o un array de bytes. Crearemos un fichero con una extensión propia.

import java.io.*;
public class FicherosBinariosApp {

	public static void main(String[] args) {

		try(FileOutputStream fos=new FileOutputStream("D:\\fichero_bin.ddr")){

			String texto="Esto es una prueba para ficheros binariosssss";

			//Copiamos el texto en un array de bytes
			byte codigos[]=texto.getBytes();

			fos.write(codigos);

		}catch(IOException e){

		}

	}

}

Ahora veremos como se lee, es prácticamente igual que vimos con FileReader, usando el método read(), cuando llega al final del fichero devuelve -1. Su diferencia básica es que con FileReader leemos caracteres y FileInputStream lee bytes.

import java.io.*;
public class FicherosBinariosApp {

	public static void main(String[] args) {

		try(FileInputStream fis=new FileInputStream("D:\\fichero_bin.ddr")){

			int valor=fis.read();
			while(valor!=-1){
				System.out.print((char)valor);
				valor=fis.read();
			}

		}catch(IOException e){

		}

	}

}

Veamos un ejemplo de leer un fichero binario, como una imagen. Si abres una imagen con el bloc de notas, vera que aparecen muchos caracteres raros.

import java.io.*;
public class FicherosBinariosApp {

	public static void main(String[] args) {

		try(FileInputStream fis=new FileInputStream("D:\\ejemplo_fich.png")){

			int valor=fis.read();
			while(valor!=-1){
				System.out.print((char)valor);
				valor=fis.read();
			}

		}catch(IOException e){

		}

	}

}

Si ejecutas el código, veras muchos caracteres que no son legibles, para nosotros.

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

8 comentarios

  1. Miguel Zambrano

    Amigo y como podria yo guardar esa variable fis (FileInputStream) en una variable bynaria stream para guardar en la Base da Datos? como imagen? sii sabes de algo avisa xfa q me urge

  2. Disco Duro de Roer Post author

    Lo mejor que puedes hacer, es guardar en la base de datos, la ruta del fichero y por programación usar FileInputStream. Espero que te sea de ayuda.

  3. juses612

    se puede escribir el archivo en una direccion ip diferente a la maquina local.

  4. Disco Duro de Roer Post author

    Para eso ya hay que usar la estructura cliente servidor

  5. albert

    necesito leer muchos archivos en una carpeta encriptarlos y salcarlos en otra carpeta como se hace

  6. Diego fernando guarnizo

    Buenos Dias necesito una ayuda quiero incrustar un archivo sea excel, mp3,pdf en un archivo word por medio de java

  7. Adrian Villegas

    Disculpa tengo una pregunta, que debo usar para modificar un excel, e bubscado y solo encuentro para crear nuevos excel :(

  8. areli

    codigo para buscar un texto en un archivo binario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *