Створіть файл із 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.