Вы просто отразите решение @ WhiteFang для написания.
FileInputStream fis = new FileInputStream(files[0]);
DataInputStream dis = new DataInputStream(new BufferedInputStream(fis));
int numFiles = dis.readInt();
int numBytesInName = dis.readInt();
String filename = dis.readUTF();
long numBytesInFile = dis.readLong();
// loop to read bytes into a byte[]
Кстати, использование writeUTF / readUTF делает запись длины имени файла избыточной. Кроме того, вам не нужно записывать количество файлов, если вы не собираетесь ничего писать после этой информации.