"...me piden escribir en el fichero de salida en bloques de 512 bytes..."
Esto puede tener varias interpretaciones: bloques de texto char[512] o bloques de enteros int[128].
El archivo original tiene caracteres numericos? Es decir un byte (p.ej.) con el caracter '2', o dos bytes con los caracteres '98', esto seria un archivo con caracteres numericos (estando separados por espacios, saltos de linea o lo que quiereas). El otro caso es que el archivo contenga enteros como tales, es decir 4 bytes para cada dato equivalente a numero entero.
Si estas en el primer caso puedes guardar un buffer de texto de 512, guardar el entero como lista de caracteres numericos dentro del buffer y escribir los 512 bytes de bufer en el archivo resultante aun cuando no todos los bytes del bufer esten usados por las lista de caracteres numricos; dicho de otra forma:
Código:
//lees '789'
buffer[0] = '7';
buffer[1] = '8';
buffer[2] = '9';
buffer[3] = 0;
...
buffer[511] = 0;
//escribes el buffer de 512
fo.write(buffer, 512);
Si estas en el segundo caso obviamente la lectura que estas usando fallará.
Saludos
vosk