Kako preberem / pretvorim InputStream v niz v Javi?
Če imate objekt java.io.InputStream
, kako naj ga obdelate in iz njega ustvarite niz String
?
Recimo, da imam objekt InputStream
, ki vsebuje besedilne podatke, in jih želim pretvoriti v Najaslovje
, da jih lahko na primer zapišem v dnevniško datoteko.
Kakšen je najlažji način, da vzamem InputStream
in ga pretvorim v String
?
public String convertStreamToString(InputStream is) {
// ???
}
3842
3
Lep način za to je uporaba Apache commons
IOUtils
za kopiranjeInputStream
vStringWriter
... nekaj takegaali celo
Lahko pa uporabite tudi
ByteArrayOutputStream
, če ne želite mešati tokov in pisalnikovApache Commons omogoča:
Seveda lahko poleg UTF-8 izberete tudi druga kodiranja znakov.
Oglejte si tudi: (dokumentacija)
Ob upoštevanju datoteke je treba najprej pridobiti primerek
java.io.Reader
. To lahko nato preberemo in dodamo vStringBuilder
(StringBuffer
ne potrebujemo, če do njega ne dostopamo v več niti,StringBuilder
pa je hitrejši). Trik je v tem, da delamo v blokih in zato ne potrebujemo drugih tokov za izravnavo. Velikost bloka je parametrizirana za optimizacijo zmogljivosti med izvajanjem.