Pergunta

Eu me vi passando por objetos InputStream/OutputStream em torno dos meus módulos de aplicativos.

Estou me perguntando se é melhor
- Salve o conteúdo no disco e passe algo como um Recurso entre as várias chamadas de métodos
- Use uma matriz de byte [
Em vez de ter que lidar com fluxos toda vez.

Qual é a sua abordagem nessas situações?
Obrigado

Editar:
Eu tenho um controlador que recebe um arquivo enviado pelo usuário. Eu tenho um módulo de utilitário que fornece alguma funcionalidade para renderizar um arquivo.

utilityMethod(InputStream is, OutputStream os)

O arquivo no InputStream é o carregado pelo usuário. OS é o fluxo associado à resposta. Gostaria de saber se é melhor ter o método do utilitário para salvar o arquivo gerado em um arquivo .tmp e retornar o caminho do arquivo, ou um byte [] etc. e ter o controlador para lidar com o OutputStream diretamente.

Foi útil?

Solução

Eu tento manter o máximo possível em RAM (principalmente por causa de razões de desempenho e RAM é barato). Então, estou usando um FileBackedBuffer para "salvar" dados de tamanho desconhecido. Tem um limite. Quando menos que limit Os bytes são escritos para ele, ele os manterá em um buffer interno. Se mais dados forem gravados, criarei o arquivo real. Esta classe tem métodos para obter um InputStream e um OutputStream A partir disso, o código de uso não se incomoda com os detalhes mesquinhos.

Outras dicas

A resposta realmente depende do contexto do problema, o que não sabemos.

Então, imaginando o caso mais genérico, eu criaria duas abstrações. A primeira abstração levaria InputStream/OutputStream como parâmetros, enquanto o outro levaria byte[].Aquele que leva fluxos pode ler e passar os dados para a implementação byte []. Portanto, agora seus usuários podem usar a abstração do fluxo e a abstração [] com base nas necessidades/confortos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top