Okuma/bir Dize için bir İnputStream dönüştürmek
java.io.InputStream
nesne varsa, o nesnenin süreci ve String
üretmek gerekir?
Sanırım bir InputStream
içeren metin veri ve ben dönüştürmek istediğiniz bu bir String
(örneğin, bu kadar yazabiliyorum içeriği akışı için bir günlük dosyası).
InputStream
alıp String
dönüştürmek için en kolay yolu nedir?
public String convertStreamToString(InputStream is) {
// ???
}
CEVAP
Burada bir yolu sadece standart Java kütüphanesi (akış kapalı, YMMV değildir) kullanarak.
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
"Stupid Scanner tricks" makale, bu hile öğrendim. Sebebi çalışır çünkü Scanner yineler jeton akışı, ve bu durumda biz ayrı simgeleri kullanarak "başlangıç giriş sınır" (\A) böylece vermeyi bize sadece bir belirteç için tüm içeriği akışı.
Not, Eğer ihtiyacınız olacak özel giriş stream kodlama, sen-ebilmek sağlamak ikinci bağımsız değişken için Scanner
yapıcı gösterir ne karakter kullanın (örneğin, "UTF-8").
Şapka ipucu dediği yazı için beni yönlendiren de Jacob, gider.
DÜZENLENMİŞTİR:Patrick, bir öneri için teşekkürler boş bir giriş akışı tutarken işlevi daha güçlü yaptı.Bir daha düzenleme:try/catch istememişti, Patrick şekilde daha az ve öz konuşuyor.
Yolu Scala bir Dize için bir İnputStre...
Java ile bir numaralama için bir Dize ...
Nasıl bir dize dönüştürmek için yığın ...
Nasıl Ruby alt veya üst durumda bir di...
Nasıl dize Python küçük harfe dönüştür...