Модули проекта Java - используйте InputStream / OutputStream или .tmpFile / byte [] - PullRequest
0 голосов
/ 16 ноября 2009

Я обнаружил, что передаю объекты InputStream / OutputStream вокруг своих модулей приложения.

Мне интересно, лучше ли
- сохранить содержимое на диск и передать что-то вроде Resource между вызовами различных методов
- использовать массив байтов []
вместо того, чтобы иметь дело с потоками каждый раз.

Как вы подходите в таких ситуациях?
Спасибо

Изменить:
У меня есть контроллер, который получает файл, загруженный пользователем. У меня есть служебный модуль, который предоставляет некоторые функции для рендеринга файла.

utilityMethod(InputStream is, OutputStream os)

Файл в InputStream - это файл, загруженный пользователем. os - это поток, связанный с ответом. Мне интересно, лучше ли иметь служебный метод для сохранения сгенерированного файла в файл .tmp и возврата пути к файлу или байта [] и т. Д. И иметь контроллер для непосредственного взаимодействия с outputStream.

Ответы [ 2 ]

1 голос
/ 16 ноября 2009

Я стараюсь хранить как можно больше оперативной памяти (в основном из-за соображений производительности, а оперативная память дешевая). Поэтому я использую FileBackedBuffer для «сохранения» данных неизвестного размера. У него есть предел. Когда в него записывается менее limit байтов, он будет хранить их во внутреннем буфере. Если будет записано больше данных, я создам фактический файл. Этот класс имеет методы для получения InputStream и OutputStream из него, поэтому код использования не беспокоит мелкие детали.

0 голосов
/ 16 ноября 2009

Ответ на самом деле зависит от контекста проблемы, о которой мы не знаем.

Итак, представляя себе наиболее общий случай, я бы создал две абстракции. Первая абстракция будет принимать InputStream/OutputStream в качестве параметров, тогда как другая будет принимать byte[]. Тот, который принимает потоки, может читать и передавать данные в реализацию byte []. Так что теперь ваши пользователи могут использовать как потоковую абстракцию, так и байтовую [] абстракцию в зависимости от своих потребностей / комфорта.

...