Merge three ByteArrays together and then split resulting ByteArrays
The way you are doing it is fine, however it seems like a better idea to just put all of the data you want to serialize into a Serializable object and then just serialize that automatically. For example you could do something like : 

public static void main(String[] args) throws IOException,
    ClassNotFoundException {
  String os = "whatever os is";
  long lastModifiedDate = 1379811105109L;
  short schemaId = 32767;
  Thing myData = new Thing(os, lastModifiedDate, schemaId);

  ByteArrayOutputStream byteOsTest = new ByteArrayOutputStream();
  ObjectOutputStream outTest = new ObjectOutputStream(byteOsTest);
  outTest.writeObject(myData);

  byte[] allWrittenBytesTest = byteOsTest.toByteArray();

  ObjectInputStream inTest = new ObjectInputStream(new ByteArrayInputStream(
      allWrittenBytesTest));
  Thing myDataTest = (Thing) inTest.readObject();

  short schemaIdTest = myDataTest.getSchemaId();
  long lastModifiedDateTest = myDataTest.getLastModifiedDate();
  String avro = myDataTest.getAvro();

  System.out.println(schemaIdTest);
  System.out.println(lastModifiedDateTest);
  System.out.println(avro);

  writeFile(allWrittenBytesTest);
}

// in its own java file
public final class Thing implements Serializable {

  private final String avro;

  private final long lastModifiedDate;

  private final short schemaId;

  public Thing(String avro, long lastModifiedDate, short schemaId) {
    this.avro = avro;
    this.lastModifiedDate = lastModifiedDate;
    this.schemaId = schemaId;
  }

  public String getAvro() {
    return avro;
  }

  public long getLastModifiedDate() {
    return lastModifiedDate;
  }

  public short getSchemaId() {
    return schemaId;
  }
}