मैं एक है String
कि मैं एक के रूप में उपयोग करना चाहते हैं InputStream
। जावा 1.0 में, आप उपयोग कर सकते हैं java.io.StringBufferInputStream
, लेकिन वह @Deprecrated
(अच्छे कारण के साथ - आप वर्ण सेट एन्कोडिंग निर्दिष्ट नहीं कर सकते हैं):
यह वर्ग वर्णों को बाइट में ठीक से परिवर्तित नहीं करता है। JDK 1.1 के रूप में, एक स्ट्रिंग से एक स्ट्रीम बनाने का पसंदीदा तरीका
StringReader
क्लास के माध्यम से है ।
आप एक के java.io.Reader
साथ बना सकते हैं java.io.StringReader
, लेकिन एक लेने Reader
और एक बनाने के लिए कोई एडेप्टर नहीं हैं InputStream
।
मैंने एक प्राचीन बग को एक उपयुक्त प्रतिस्थापन के लिए कहा, लेकिन ऐसी कोई चीज मौजूद नहीं है - जहां तक मैं बता सकता हूं।
आम java.lang.String.getBytes()
तौर पर सुझाए गए वर्कअराउंड का उपयोग इनपुट के रूप में किया जाता है java.io.ByteArrayInputStream
:
public InputStream createInputStream(String s, String charset)
throws java.io.UnsupportedEncodingException {
return new ByteArrayInputStream(s.getBytes(charset));
}
लेकिन इसका मतलब है कि String
बाइट्स की एक सरणी के रूप में पूरे मेमोरी को भौतिक बनाना और एक स्ट्रीम के उद्देश्य को पराजित करना। ज्यादातर मामलों में यह कोई बड़ी बात नहीं है, लेकिन मैं एक ऐसी चीज की तलाश कर रहा था, जो एक धारा के इरादे को बनाए रखे - कि जितना संभव हो उतना कम डेटा (री) मेमोरी में भौतिक हो।