Guava İOUtils için eşdeğer.olabilirdi İnputStream)
Apache Commons IO IOUtils.toString() String InputStream
okumak için güzel kullanışlı bir yöntem var.
Guava Apache Commons uzak ve hareket etmeye çalıştığım için: Guava içinde bir karşılığı var mıdır? com.google.common.io
paketindeki tüm sınıfları baktım ve neredeyse bir şey gibi basit bir şey bulamadım.
Düzenleme:Anlıyorum ve karakter grupları ile sorunları takdir ediyorum. Tüm kaynaklarım ASCII (Evet, ASCII, ANSI vb.), biliyorum geldim! bu durumda, kodlama benim için bir sorun değil.
CEVAP
Kullanacaktınız o Calum cevabı yorum belirtmiştir
CharStreams.toString(new InputStreamReader(supplier.get(), Charsets.UTF_8))
Bu kod aşırı yük CharStreams.toString(Readable)
belirtir: çünkü sorunlu
Yakın değil
Readable
yapar.
Bu InputStreamReader
, ve uzantısı InputStream
supplier.get()
tarafından geri gönderilen bu kodu tamamlandıktan sonra kapatılması anlamına gelir.
Eğer, diğer taraftan, size yararlanmak aslında o sana görünür zaten var InputSupplier<InputStream>
ve kullanılan aşırı yük CharStreams.toString(InputSupplier<R extends Readable & Closeable>
), toString
yöntem olacaktır işlemek hem yaratma ve kapanış Reader
.
Bu Jon, aslında giriş olarak InputStream
alır CharStreams.newReaderSupplier
herhangi bir aşırı yüklenme olmaması dışında önerilen Skeet tam olarak ne olduğunu... InputSupplier
bir vermek zorunda:
InputSupplier<? extends InputStream> supplier = ...
InputSupplier<InputStreamReader> readerSupplier =
CharStreams.newReaderSupplier(supplier, Charsets.UTF_8);
// InputStream and Reader are both created and closed in this single call
String text = CharStreams.toString(readerSupplier);
InputSupplier
noktası Guava try-finally
çirkin bir blok kaynakları düzgün bir şekilde kapalı olduğundan emin olmak için gereken parçaları işlemek için izin vererek hayatınızı kolaylaştırmak için.
Düzenleme:Şahsen, aşağıdaki aslında yazmak istiyorum, sadece kod içinde yukarıdaki adımları bozuluyordu) buluyorum
String text = CharStreams.toString(
CharStreams.newReaderSupplier(supplier, Charsets.UTF_8));
olmakfarbu daha ayrıntılı:
String text;
InputStreamReader reader = new InputStreamReader(supplier.get(),
Charsets.UTF_8);
boolean threw = true;
try {
text = CharStreams.toString(reader);
threw = false;
}
finally {
Closeables.close(reader, threw);
}
Yazmak için bu düzgün kendini kontrol etmen ... ne daha fazla veya daha az.
Düzenleme: Şubat. 2014
InputSupplier
OutputSupplier
bu yöntemleri Guava 16.0 içinde bırakılmıştır. Yerlerini alanlarByteSource
, CharSource
, ByteSink
ve CharSink
. ByteSource
artık String
olarak içeriğini bir verilen bu gibi:
ByteSource source = ...
String text = source.asCharSource(Charsets.UTF_8).read();
&Quot;Objective-C eşdeğer olabilirdi n...
Okuma/bir Dize için bir İnputStream dö...
() Olabilirdi PHP eşdeğer...
saf JavaScript jQuery eşdeğer'in ...
Bir Java içeriğini yazmak için kolay b...