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.
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.
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
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.
se puede escribir el archivo en una direccion ip diferente a la maquina local.
Para eso ya hay que usar la estructura cliente servidor
necesito leer muchos archivos en una carpeta encriptarlos y salcarlos en otra carpeta como se hace
Buenos Dias necesito una ayuda quiero incrustar un archivo sea excel, mp3,pdf en un archivo word por medio de java
Disculpa tengo una pregunta, que debo usar para modificar un excel, e bubscado y solo encuentro para crear nuevos excel :(
codigo para buscar un texto en un archivo binario