كيف يمكنني تحويل سلسلة إلى InputStreamReader في جافا؟

StackOverflow https://stackoverflow.com/questions/247161

  •  05-07-2019
  •  | 
  •  

سؤال

وكيف يمكنني تحويل قيمة String إلى InputStreamReader؟

هل كانت مفيدة؟

المحلول

ByteArrayInputStream يفعل ايضا خدعة:

InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );

نصائح أخرى

وكما أنني وجدت المشاعات اباتشي الطبقة IOUtils، لذلك:

InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));

هل من الضروري أن يكون على وجه التحديد لInputStreamReader؟ ماذا عن استخدام StringReader ؟

وعلى خلاف ذلك، يمكنك استخدام StringBufferInputStream ، لكنها انتقدت بسبب مشاكل التحويل حرف (وهذا هو السبب يجب عليك تفضل StringReader).

ونفس السؤال عن Dan - لماذا لا StringReader

إذا يجب أن يكون InputStreamReader، ثم:

String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);

هل تحاول الحصول على وظيفة Reader) من InputStreamReader، أو ب) وظيفة InputStream من InputStreamReader؟ أنت لن تحصل ب). InputStreamReader ليست InputStream.

والغرض من InputStreamReader هو اتخاذ InputStream - مصدر بايت - وفك بايت لحرف في شكل Reader. لديك بالفعل البيانات الخاصة بك كما حرف (سلسلة الأصلية). سوف ترميز سلسلة الخاص بك إلى بايت وفك بايت إلى حرف تكون عملية زائدة عن الحاجة.

إذا كنت تحاول الحصول على Reader من المصدر، واستخدام StringReader.

إذا كنت تحاول الحصول على InputStream (الذي يعطي إلا أنت بايت)، استخدم اباتشي العموم IOUtils.toInputStream(..) على النحو الذي اقترحه إجابات أخرى هنا.

ويمكنك محاولة Cactoos :

InputStream stream = new InputStreamOf(str);

وبعد ذلك، إذا كنت في حاجة الى Reader:

Reader reader = new ReaderOf(stream);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top