जवाबों:
ByteArrayInputStream भी करता है चाल:
InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );
फिर पाठक में परिवर्तित करें:
InputStreamReader reader = new InputStreamReader(is);
ByteArrayInputStream : चूंकि: JDK1.0 यह मानने का कोई मामूली कारण नहीं है कि यह वर्ग "जावा 1.4 के बाद से" है। वह गलत संस्करण संख्या विशेष रूप से अजीब है जैसा कि जावा 1.4 पेश किया गया है NIOऔर यह उसी संस्करण के भीतर एक एपीआई और इसके वैचारिक उत्तराधिकारी को पेश करने के लिए बहुत कम समझ में आता है।
मुझे अपाचे कॉमन्स IOUtilsक्लास भी मिली , इसलिए:
InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));
new InputStreamReader(IOUtils.toInputStream(myString, "UTF-16"), "UTF-16")दोषरहित होगा।
Stringएक byte[]सरणी में बेकार रूपांतरण के बारे में बात करने के लिए नहीं char...
क्या यह विशेष रूप से एक 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);
byte[] bytes = charset.getBytes();
क्या आप Readerबाहर से InputStreamReader(a) InputStreamकार्यक्षमता या b) कार्यक्षमता प्राप्त करने का प्रयास कर रहे हैं InputStreamReader? आपको b) नहीं मिलेगा। InputStreamReaderएक नहीं है InputStream।
के प्रयोजन के InputStreamReaderलिए एक लेने के लिए है InputStreamएक के रूप में वर्ण के लिए और डिकोड बाइट्स - बाइट्स का एक स्रोत - Reader। आपके पास पहले से ही आपके डेटा को चार्ट (आपका मूल स्ट्रिंग) के रूप में है। अपने स्ट्रिंग को बाइट्स में एन्कोड करना और बाइट्स को वापस चार्ज़ में डिकोड करना एक बेमानी कार्रवाई होगी।
यदि आप Readerअपने स्रोत से बाहर निकलने की कोशिश कर रहे हैं , तो उपयोग करें StringReader।
यदि आप एक InputStream(जो आपको केवल बाइट्स देते हैं) पाने की कोशिश कर रहे हैं , तो IOUtils.toInputStream(..)यहां अन्य उत्तरों द्वारा सुझाए अनुसार एपाचे कॉमन्स का उपयोग करें।