Kā es varu nolasīt / konvertēt InputStream par virkni Java valodā?
Ja jums ir java.io.InputStream
objekts, kā apstrādāt šo objektu un izveidot stringu
?
Pieņemsim, ka man ir InputStream
, kas satur teksta datus, un es gribu tos pārvērst String
, lai, piemēram, tos varētu ierakstīt žurnāla failā.
Kāds ir vienkāršākais veids, kā ņemt InputStream
un pārvērst to string
?
public String convertStreamToString(InputStream is) {
// ???
}
3842
3
Labs veids, kā to izdarīt, ir, izmantojot Apache commons
IOUtils
, lai kopētuInputStream
uzStringWriter
... kaut ko līdzīgu.vai pat
Kā alternatīvu var izmantot
ByteArrayOutputStream
, ja nevēlaties sajaukt plūsmas un rakstītājus.Apache Commons ļauj:
Protams, bez UTF-8 var izvēlēties arī citas rakstzīmju kodēšanas.
Skatiet arī: (dokumentācija)
Ņemot vērā failu, vispirms jāiegūst
java.io.Reader
instance. Pēc tam to var nolasīt un pievienotStringBuilder
(mums nav nepieciešamsStringBuffer
, ja mēs tam nepieejam vairākos pavedienos, unStringBuilder
ir ātrāks). Triks ir tajā, ka mēs strādājam blokos, un tāpēc mums nav vajadzīgas citas buferēšanas plūsmas. Bloka lielums tiek parametrizēts, lai optimizētu veiktspēju darbības laikā.