Autor Tema: lectura de ficheros binarios Java FileInputStream readAllBytes leer pdf código  (Leído 526 veces)

juanpepe

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 5
    • Ver Perfil
Hola, estoy intentando resolver estos ejercicios, agradecería ayuda.

*Escribir un programa en Java que, extraiga a un fichero de texto todos los caracteres alfabéticos (códigos 32 a 127, además del 10 y el 13) que contenga un fichero PDF.


*Escribir un programa en Java que, abra una imagen en formato BMP y comprueba si está comprimida, mirando el valor del byte en la posición 30 (empezando a contar desde 0). Si ese valor es un 0 (que es lo habitual), indicará que el fichero no está comprimido. Deberás leer toda la cabecera (los primeros 54 bytes) con una sola orden.
Se puede usar "Seek" para movernos a un punto u otro de un fichero si usamos un "BinaryReader", pero está un poco más escondido: no se lo pedimos directamente a nuestro fichero, sino al "Stream" (flujo de datos) que hay por debajo, a su "BaseStream", así: ficheroEntrada.BaseStream.Seek(1, SeekOrigin.Begin);
« Última modificación: 17 de Abril 2021, 20:38 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 725
    • Ver Perfil
Re: ficheros binarios
« Respuesta #1 en: 28 de Enero 2021, 00:29 »
Hola, no tengo mucha experiencia con esto de hacer lecturas binarias de ficheros.

Creo que una solución al primer ejercicio, podría ser esta:
Código: [Seleccionar]
public class LeerPDF {

public static void main(String[] args) {

try {
FileInputStream lectorBytes = new FileInputStream("D:\\Programacion\\FicherosTXT\\cita.pdf");
FileOutputStream escritorBytes = new FileOutputStream("D:\\Programacion\\FicherosTXT\\caracteresPDF.txt");

//Leemos todos los bytes del archivo PDF y los recibimos en un array
byte[] bytesLeidos =  lectorBytes.readAllBytes();

//Recorremos todos los bytes y si es el valor deseado, lo escribimos en el archivo texto
for (int i = 0; i < bytesLeidos.length; i++) {
byte esteByte = bytesLeidos[i];
if ((esteByte >= 32 && esteByte <= 127) || esteByte == 10 || esteByte == 13) {
escritorBytes.write(esteByte);
}
}

System.out.println("Caracteres extraidos...");
lectorBytes.close();
escritorBytes.close();

} catch (FileNotFoundException e) {
System.out.println("No se encuentra archivo");
e.getMessage();
} catch (IOException e) {
System.out.println("No se puede acceder al archivo");
e.getMessage();
}
}

}
NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".