Come posso leggere / convertire un InputStream in una stringa in Java?
Se hai un oggetto java.io.InputStream
, come dovresti elaborare quell'oggetto e produrre una stringa
?
Supponiamo che io abbia un InputStream
che contiene dati di testo, e voglio convertirlo in una Stringa
, così per esempio posso scriverlo in un file di log.
Qual è il modo più semplice per prendere un InputStream
e convertirlo in una Stringa
?
public String convertStreamToString(InputStream is) {
// ???
}
3842
3
Un bel modo per farlo è usare Apache commons
IOUtils
per copiare ilInputStream
in unStringWriter
... qualcosa comeo anche
In alternativa, si potrebbe usare
ByteArrayOutputStream
se non si vuole mischiare i propri Streams e WritersApache Commons permette:
Naturalmente, si possono scegliere altre codifiche di caratteri oltre a UTF-8.
Vedere anche: (documentazione)
Tenendo conto del file si dovrebbe prima ottenere un'istanza di
java.io.Reader
. Questo può poi essere letto e aggiunto a unoStringBuilder
(non abbiamo bisogno diStringBuffer
se non stiamo accedendo in più thread, eStringBuilder
è più veloce). Il trucco qui è che lavoriamo in blocchi, e come tali non abbiamo bisogno di altri flussi di buffering. La dimensione del blocco è parametrizzata per l'ottimizzazione delle prestazioni in tempo reale.