Quando ho voglia di scrivere l'intero contenuto di un file in un OutputStream
, di solito allocare un buffer come byte[]
, poi fare un ciclo for
ai dati read
dal file di InputStream
nel buffer e scrivere il contenuto del buffer nel OutputStream
, fino a quando lo InputStream
non ha più byte disponibili.Esiste un modo migliore per scrivere l'intero contenuto di un file in un OutputStream?
Questo mi sembra piuttosto maldestro. C'è un modo migliore per farlo?
Inoltre, non sono sempre sicuro della dimensione del buffer. Di solito, sto allocando 1024 byte, perché è semplicemente buono. C'è un modo migliore per determinare una dimensione del buffer ragionevole?
Nel mio caso corrente, voglio copiare l'intero contenuto di un file nel flusso di output che scrive il contenuto di una risposta HTTP. Quindi, questa non è una domanda su come copiare i file sul file system.
In che modo il mio test dell'unità può verificare cosa viene scritto su OutputStream? ServletOutputStream mockOutput = mock (ServletOutputStream.class); \t \t when (response.getOutputStream()). ThenReturn (mockOutput); –