Estou assumindo que você quer dizer que 'use' significa leitura, mas o que vou explicar para o caso de leitura pode ser basicamente revertido para o caso de gravação.
então você acaba com um byte []. isso pode representar qualquer tipo de dados que possa precisar de tipos especiais de conversões (caracteres, criptografados etc.). vamos fingir que você deseja gravar esses dados como estão em um arquivo.
Em primeiro lugar, você pode criar um ByteArrayInputStream, que é basicamente um mecanismo para fornecer os bytes a algo em sequência.
você pode criar um FileOutputStream para o arquivo que deseja criar. existem muitos tipos de InputStreams e OutputStreams para diferentes origens e destinos de dados.
Por fim, você escreveria o InputStream no OutputStream. nesse caso, a matriz de bytes seria enviada em sequência para o FileOutputStream para gravação. Para isso, eu recomendo usar IOUtils
byte[] bytes = ...;//
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
FileOutputStream out = new FileOutputStream(new File(...));
IOUtils.copy(in, out);
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
e ao contrário
FileInputStream in = new FileInputStream(new File(...));
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(in, out);
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
byte[] bytes = out.toByteArray();
se você usar os trechos de código acima, precisará lidar com exceções e eu recomendo que você faça o 'fechamento' em um bloco final.