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


5 Answers

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

new ByteArrayInputStream(inputString.getBytes("UTF-8"))
Question

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




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

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




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

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



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

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







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

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

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




Related



Tags

java java   stream