java كيفية تحويل قارئ إلى InputStream وكاتب إلى OutputStream؟





6 Answers

إذا كنت قد بدأت مع String ، فيمكنك أيضًا القيام بما يلي:

new ByteArrayInputStream(inputString.getBytes("UTF-8"))
java stream

هل هناك طريقة سهلة لتجنب التعامل مع مشاكل ترميز النص؟




لاحظ أيضًا أنه إذا كنت قد بدأت مع String ، يمكنك تخطي إنشاء StringReader وإنشاء InputStream في خطوة واحدة باستخدام org.apache.commons.io.IOUtils من Common IO مثل:

InputStream myInputStream = IOUtils.toInputStream(reportContents, "UTF-8");

بالطبع ما زلت بحاجة إلى التفكير في ترميز النص ، ولكن على الأقل يحدث التحويل في خطوة واحدة.







لا يمكنك تجنب مشاكل ترميز النص ، ولكن لدى Apache commons-io

لاحظ أن هذه هي المكتبات المشار إليها في إجابة بيتر من koders.com ، فقط روابط إلى المكتبة بدلاً من شفرة المصدر.




تحذير عند استخدام WriterOutputStream - لا يتعامل دائمًا مع كتابة البيانات الثنائية إلى ملف بشكل صحيح / نفس دفق الإخراج العادي. كان لدي مشكلة مع هذا الأمر الذي استغرق مني بعض الوقت لتعقب.

إذا كنت تستطيع ، أوصي باستخدام دفق إخراج كقاعدة ، وإذا كنت بحاجة إلى كتابة السلاسل ، استخدم مجمّع OUtputStreamWriter حول الدفق للقيام بذلك. إنه أكثر موثوقية بكثير لتحويل النص إلى بايت من العكس ، وهو السبب في أن WriterOutputStream ليس جزءًا من مكتبة Java القياسية




لقراءة سلسلة في دفق باستخدام ما توفره java فقط.

InputStream s = new BufferedInputStream( new ReaderInputStream( new StringReader("a string")));



Related


Tags

java   stream