Я бы использовал DataOutputStream / DataInputStream и использовал writeUTF () / readUTF () имя файла перед отправкой длины файла, за которым следовал файл.
Как правило, у вас должен быть собственный протокол, который отправляет нужную вам информацию.
Что-то вроде
DataOutputStream dos
byte[] bytes;
dos.writeUTF(filename);
dos.writeInt(bytes.length);
dos.write(bytes);
читать
DataInputStream dis
String filename = dis.readUTF();
int length = dis.readInt();
byte[] bytes = new byte[length];
dis.readFully(bytes);