Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: juanpepe en 25 de Enero 2021, 14:58

Título: lectura de ficheros binarios Java FileInputStream readAllBytes leer pdf código
Publicado por: juanpepe en 25 de Enero 2021, 14:58
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);
Título: Re: ficheros binarios
Publicado por: Kabuto 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();
}
}

}