SORU
21 Kasım 2008, Cuma


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
26 Mart 2011, CUMARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • Tahir Jahi

    Tahir Jahi

    6 Mart 2006
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012