2013-07-24 7 views
3

Что я хочу сделать, это загрузить файл с веб-сервера. Когда я отслеживаю код, два программиста используют ByteArrayOutputStream и FileOutputStream по-разному, чтобы загрузить файл в том же сценарии. ЭтоByteArrayOutputStream vs FileOutputStream с точки зрения использования и производительности памяти

  • Случай 1: использовать ByteArrayOutputStream создать файл и загрузить его.

  • Случай 2: использовать FileOutputStream временно создать файл в веб-сервере и загрузить его, а затем удалить этот файл.

PS: Дело 2 файла больше, чем в случае с файлом 1.

Могу ли я использовать ByteArrayOutputStream в обоих случаях? Есть ли намерение использовать FileOutputStream во втором случае? То, что я хочу знать, - с точки зрения производительности и памяти. Заранее спасибо.

+7

'ByteArrayOutputStream' находится в памяти, а файл FileOutputStream - это файл. Последствия очевидны. 'ByteArrayOutputStream' быстрее, но рассмотрим возможность загрузки файла 10Gb ... Казалось бы, это откроет хорошее отверстие в программе - просто подайте его в большой файл. –

+0

Все зависит от размера файла, который вы загружаете. 'ByteArrayOutputStream' хорош для файла меньшего размера. – Santosh

+3

Смешно сравнивать их вообще. Один использует ничего, кроме памяти, на скорости шины и без диска, другой использует небольшую память и столько же дисков, сколько необходимо, на скорости ввода-вывода на диске. – EJP

ответ

2

Объединение Бориса Ответы Паука и Питера Лори на вопрос: ByteArrayOutputStream находится в памяти и FileOutputStream является файлом. Последствия очевидны. ByteArrayOutputStream быстрее, но подумайте о загрузке файла 10Gb ... Казалось бы, это открыло хорошее отверстие в программе - просто подайте ему большой файл. Также ByteArrayOutputStream ограничен размером менее 2 ГБ, поскольку он использует байт []

Смежные вопросы