java - मैं जावा में एक इनपुटस्ट्रीम रीडर में स्ट्रिंग कैसे बदलूं?




string stream (4)

मैं एक String मान को InputStreamReader में कैसे बदल सकता हूं?


आप कैक्टूओज़ आज़मा सकते हैं:

InputStream stream = new InputStreamOf(str);

फिर, यदि आपको Reader आवश्यकता है:

Reader reader = new ReaderOf(stream);

क्या आप एक प्राप्त करने की कोशिश कर रहे हैं) InputStreamReader Reader कार्यक्षमता, या बी) InputStream कार्यक्षमता? आपको बी नहीं मिलेगा)। InputStreamReader एक InputStream नहीं है।

InputStreamReader का उद्देश्य एक InputStream लेना है - बाइट्स का स्रोत - और Reader के रूप में वर्णों को बाइट्स को डीकोड करना। आपके पास पहले से ही आपका डेटा वर्ण (आपका मूल स्ट्रिंग) है। अपने स्ट्रिंग को बाइट्स में एन्कोड करना और बाइट्स को चार्ज पर वापस डीकोड करना एक अनावश्यक ऑपरेशन होगा।

यदि आप अपने स्रोत से Reader प्राप्त करने का प्रयास कर रहे हैं, तो StringReader Reader का उपयोग StringReader

यदि आप InputStream (जो केवल आपको बाइट्स देता है) प्राप्त करने का प्रयास कर रहे हैं, तो यहां अन्य उत्तरों द्वारा सुझाए गए अपाचे कॉमन्स IOUtils.toInputStream(..) उपयोग करें।


मुझे apache commons IOUtils क्लास भी मिला, इसलिए:

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

@Dan समान प्रश्न - @Dan क्यों नहीं?

अगर इसे इनपुटस्ट्रीम रीडर होना है, तो:

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





stream