Я припускаю, що ви маєте на увазі, що "використання" означає читання, але те, що я поясню для випадку читання, в основному може бути відмінено для випадку запису.
тож ви закінчуєте байт []. це може представляти будь-які дані, для яких можуть знадобитися особливі типи перетворень (символьні, зашифровані тощо). давайте зробимо вигляд, що хочете записати ці дані так, як у файл.
по-перше, ви можете створити ByteArrayInputStream, який в основному є механізмом для подачі байтів на щось послідовно.
тоді ви можете створити FileOutputStream для файлу, який ви хочете створити. існує багато типів InputStreams та OutputStreams для різних джерел даних та напрямків.
нарешті, ви б написали InputStream в OutputStream. у цьому випадку масив байтів буде послідовно надсилатися до FileOutputStream для запису. Для цього я рекомендую використовувати IOUtils
byte[] bytes = ...;//
ByteArrayInputStream in = new ByteArrayInputStream(bytes);
FileOutputStream out = new FileOutputStream(new File(...));
IOUtils.copy(in, out);
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
і в зворотному напрямку
FileInputStream in = new FileInputStream(new File(...));
ByteArrayOutputStream out = new ByteArrayOutputStream();
IOUtils.copy(in, out);
IOUtils.closeQuietly(in);
IOUtils.closeQuietly(out);
byte[] bytes = out.toByteArray();
якщо ви використовуєте наведені вище фрагменти коду, вам потрібно буде обробляти винятки, і я рекомендую вам зробити "закриття" в остаточному блоці.