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

  • Dylan Brenan

    Dylan Brenan

    22 Aralık 2009
  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • GamingAndTech

    GamingAndTec

    16 NİSAN 2013