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

  • dirkgently1

    dirkgently1

    13 NİSAN 2006
  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • modica89

    modica89

    24 HAZİRAN 2007