Створіть файл із ByteArrayOutputStream


78

Хтось може пояснити, як я можу отримати об'єкт файлу, якщо у мене є лише файл ByteArrayOutputStream. Як створити файл із ByteArrayOutputStream?

Відповіді:


141

Ви можете зробити це за допомогою a FileOutputStreamта writeToметоду.

ByteArrayOutputStream byteArrayOutputStream = getByteStreamMethod();
try(OutputStream outputStream = new FileOutputStream("thefilename")) {
    byteArrayOutputStream.writeTo(outputStream);
}

Джерело: "Створення файлу з ByteArrayOutputStream в Java." щодо кодових винаходів


1
@MarkusMikkolainen так .. очевидно :)
— Suresh Atta

9
Або використовувати Java-спробувати з твердженням ресурсів , щоб повністю позбутися від нарешті , блоку;) stackoverflow.com/questions/2016299 / ...
— dimuthu

брате, що якщо я не маю "thefilename", вважаючи, що я маю потік байтів [] цього Excel, то який шлях?
— данська

26

Для цього ви можете використовувати FileOutputStream.

FileOutputStream fos = null;
try {
    fos = new FileOutputStream(new File("myFile")); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream();

    // Put data in your baos

    baos.writeTo(fos);
} catch(IOException ioe) {
    // Handle exception here
    ioe.printStackTrace();
} finally {
    fos.close();
}

10
Ваш код не працюватиме fosв tryблоці. Крім того, new File()не потрібно.
— Людовик Гійом

Добре, що він додав "новий файл ()". Читачеві легше знати, що доступний конструктор файлів.
— Буффало,

Здається, це потрібно для Android.
— Кіт Холлідей

Може бути покращений за допомогою fos всередині try-with-resources () і скиданням нарешті
— vikingsteve
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.