String
değerini InputStreamReader
içine nasıl dönüştürebilirim?Bir String'i java'daki bir InputStreamReader'a nasıl dönüştürebilirim?
cevap
ByteArrayInputStream da hile yapar?
o zaman InputStreamReader olmak zorundaysa:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
Özellikle bir InputStreamReader olması gerekiyor mu? StringReader'u kullanmaya ne dersiniz?
Aksi takdirde, StringBufferInputStream'u kullanabilirsiniz, ancak karakter dönüştürme sorunları nedeniyle kullanımdan kaldırılmıştır (StringReader'ı tercih etmelisiniz).
InputStream is = new ByteArrayInputStream(myString.getBytes(charset));
veya b) InputStreamReader
dışında InputStream
işlevselliği? B) alamayacaksın. InputStreamReader
, InputStream
değil.
InputStreamReader
'un amacı InputStream
- bir bayt kaynağı almak ve baytları Reader
biçiminde chars olarak çözmektir. Verilerinizi zaten karakter olarak (orijinal dizginiz) var. String'inizi baytlara kodlamak ve baytları tekrar chars'a çözmek, gereksiz bir işlem olacaktır.
Kaynağınızdan Reader
almaya çalışıyorsanız, StringReader
kullanın.
InputStream
(yalnızca bayt verir) almaya çalışıyorsanız, diğer yanıtlar tarafından önerilen şekilde apache commons IOUtils.toInputStream(..)
kullanın.
Dize-> bayt [] 'ı dönüştürme veya bunun tersi bir karakter kodlamasını belirtmeden hemen hemen her zaman bir hatadır. –
Bu, varsayılan platform kodlamasına ve dizedeki karakterlere bağlı olarak veri kaybına neden olabilir. Hem kodlama hem de kod çözme işlemleri için Unicode kodlaması belirtmek daha iyi olurdu. Daha fazla bilgi için bunu okuyun: http://illegalargumentexception.blogspot.com/2009/05/java-rough-guide-to-character-encoding.html#javaencoding_lossyconversions – McDowell
Kodlama paramının sadece belirli bir bayt almak için gerekli değil mi kodlama? Ben InputSTreamReader yapıcı için seçtiğiniz gibi String # getBytes çağrısı için aynı kodlamayı seçtiğiniz sürece, hangisini seçeceğiniz önemli değil. Bu özel durum için Joachim ve McDowell'in yanlış olduğuna eminim. Bir InputStreamReader'ı bir String'in etrafına sarmak için kodlama bilgisi gerekmez. –
Eğer InputStreamReader
dışarı) Reader
işlevselliği çıkarmaya mı çalışıyorsunuz: Ben de Apache Commons yüzden IOUtils
sınıfı, bulunan
String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
Sen Cactoos deneyebilirsiniz:
InputStream stream = new InputStreamOf(str);
Sonra bir Reader
gerekirse:
Reader reader = new ReaderOf(stream);
- 1. Normal ifadeyle javadaki URL nasıl doğrulanır?
- 2. Robot Çerçeve: stringi ascii kullanarak nasıl kodlanır?
- 3. Diziyi bir ListIterator'a nasıl dönüştürebilirim?
- 4. Bir IntPtr'ı Akışa nasıl dönüştürebilirim?
- 5. StreamReader'ı bir dizeye nasıl dönüştürebilirim?
- 6. Dikdörtgen'i bir RectangleF'ye nasıl dönüştürebilirim?
- 7. Bir NSHttpCookie'yi MonoTouch'ta bir System.Net.Cookie'ye nasıl dönüştürebilirim?
- 8. Bir dizeyi Io'deki bir listeye nasıl dönüştürebilirim?
- 9. Java'da bir String'i bir DOMSource'a nasıl dönüştürebilirim?
- 10. Bir diziyi Perl'deki bir kareye nasıl dönüştürebilirim?
- 11. TypeScript'te bir Set'i bir diziye nasıl dönüştürebilirim?
- 12. Bir aritmetik işareti içeren Stringi tamsayı olarak dönüştürün
- 13. Python urandom'unu bir dizeye nasıl dönüştürebilirim?
- 14. Pandas DataFrame'i bir listeye nasıl dönüştürebilirim?
- 15. Dizeyi bir unicode karakterine nasıl dönüştürebilirim?
- 16. Bir datetime.date nesnesini python'da datetime.datetime nasıl dönüştürebilirim?
- 17. Bir Float'ı Objective C'deki int'ye nasıl dönüştürebilirim?
- 18. Dize karakterleri bir listeye nasıl dönüştürebilirim?
- 19. Bir int'i boole dizisine nasıl dönüştürebilirim?
- 20. Bir DateTime nesnesini YYMMDD biçimine nasıl dönüştürebilirim?
- 21. Bir jar dosyasını apk formatına nasıl dönüştürebilirim?
- 22. C++ 'da uzun bir dizgiye nasıl dönüştürebilirim?
- 23. Bayt dizisini bir dizeye nasıl dönüştürebilirim?
- 24. Ortak lisp'de bir dizeyi tamsayıya nasıl dönüştürebilirim?
- 25. Bu işlevi genel bir türe nasıl dönüştürebilirim?
- 26. Karakterlerin LazySeq'lerini Clojure'daki bir String'e nasıl dönüştürebilirim?
- 27. WPF denetimini bir görüntüye nasıl dönüştürebilirim?
- 28. Karakter kodunu bir karaktere nasıl dönüştürebilirim?
- 29. Unicode yolunu bir c dizesine nasıl dönüştürebilirim?
- 30. Büyük bir dizeyi java'daki tamsayıya nasıl dönüştürebilirim?
gerçekten güvenli tarafta olmak üzere, charset belirtmelidir. – toolkit
Platformun varsayılan karakter kümesini miras almak için * isteyebilirsiniz. – slim
Teşekkürler. Bitti. Plataform'un varsayılan karakter kümesini tespit etmenin en iyi yolu nedir? –