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

  • Chaoticmoogle

    Chaoticmoogl

    13 ŞUBAT 2006
  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010
  • Matt Harding

    Matt Harding

    23 Mayıs 2006

İLGİLİ SORU / CEVAPLAR