Yanıtlar:
ByteArrayInputStream hile de yapar:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
Ardından okuyucuya dönüştürün:
InputStreamReader reader = new InputStreamReader(is);
ByteArrayInputStream
: Since: JDK1.0 Bu sınıfın “Java 1.4'ten beri” olduğunu varsaymanın en ufak bir nedeni yoktur. Bu yanlış sürüm numarası özellikle Java 1.4'ün tanıtımı kadar tuhaftır NIO
ve aynı sürümde bir API ve onun kavramsal halefini tanıtmak çok mantıklı değildir.
Ayrıca apache commons IOUtils
sınıfı buldum , yani:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")
kayıpsız olurdu.
String
bir byte[]
diziye gereksiz bir dönüşümünden bahsetmemek için, baytları char
s'ye geri dönüştürmek için ...
Özellikle bir InputStreamReader olmalı mı? StringReader kullanmaya ne dersiniz ?
Aksi takdirde, StringBufferInputStream kullanabilirsiniz , ancak karakter dönüştürme sorunları nedeniyle kullanımdan kaldırılmıştır (bu nedenle StringReader'ı tercih etmelisiniz).
@Dan ile aynı soru - neden StringReader olmasın?
InputStreamReader olması gerekiyorsa, o zaman:
String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);
byte[] bytes = charset.getBytes();
A) Reader
işlevselliğinden InputStreamReader
veya b) InputStream
işlevsellikten çıkmaya InputStreamReader
mı çalışıyorsunuz? B) elde edemezsiniz. InputStreamReader
bir değil InputStream
.
Amacı, InputStreamReader
bir almaktır InputStream
bir şeklinde karakter bayt ve deşifre - bayt bir kaynak - Reader
. Verilerinizi char (orijinal Dizeniz) olarak zaten aldınız. String'inizi baytlara kodlamak ve baytları karakterlere geri çözmek gereksiz bir işlemdir.
Reader
Kaynağınızdan çıkmaya çalışıyorsanız kullanın StringReader
.
Bir InputStream
(yalnızca size bayt veren) almaya çalışıyorsanız, IOUtils.toInputStream(..)
burada diğer yanıtların önerdiği şekilde apache ortaklarını kullanın .