0

Je me suis retrouvé à passer des objets InputStream/OutputStream autour de mes modules d'application.Modules de projet Java - utilisez InputStream/OutputStream ou .tmpFile/byte []

Je me demande s'il est préférable de
- sauvegarder le contenu sur le disque et passer quelque chose comme un Resource entre les différentes méthodes appelle
- utiliser un octet [] tableau
au lieu d'avoir à traiter avec des flux à chaque fois.

Quelle est votre approche dans ces situations?
Merci

Edit:
J'ai un contrôleur qui reçoit un fichier téléchargé par l'utilisateur. J'ai un module d'utilité qui fournit des fonctionnalités pour rendre un fichier.

utilityMethod(InputStream is, OutputStream os) 

Le fichier dans InputStream est celui téléchargé par l'utilisateur. os est le flux associé à la réponse. Je me demande s'il est préférable d'avoir la méthode utilitaire pour enregistrer le fichier généré dans un fichier .tmp et retourner le chemin du fichier, ou un octet [], etc. et avoir le contrôleur pour traiter le outputStream directement.

+1

Pour quoi utilisez-vous les flux et quel est le type réel? – notnoop

Répondre

1

J'essaie de garder autant de RAM que possible (principalement pour des raisons de performances et la RAM est bon marché). Donc j'utilise un FileBackedBuffer pour "sauvegarder" des données de taille inconnue. Il a une limite. Quand moins de limit octets sont écrits, il les gardera dans un tampon interne. Si plus de données sont écrites, je vais créer le fichier réel. Cette classe a des méthodes pour obtenir un InputStream et un OutputStream, donc le code utilisant n'est pas dérangé par les petits détails.

0

La réponse dépend en fait du contexte du problème, que nous ne connaissons pas. Donc, imaginant le cas le plus générique, je créerais deux abstractions. La première abstraction prendrait InputStream/OutputStream comme paramètres, alors que l'autre prendrait byte[]. Celui qui prend des flux peut lire et transmettre les données à l'implémentation de byte []. Alors maintenant, vos utilisateurs peuvent utiliser à la fois l'abstraction de flux et l'abstraction de byte [] en fonction de leurs besoins/confort.

Questions connexes