जवाबों:
ByteArrayOutputStream
एक बफर के रूप में उपयोग करें :
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final String utf8 = StandardCharsets.UTF_8.name();
try (PrintStream ps = new PrintStream(baos, true, utf8)) {
yourFunction(object, ps);
}
String data = baos.toString(utf8);
PrintStream ps = new PrintStream(baos,true,"utf-8");
चारसेट से बचने के लिए उपयोग करने का सुझाव
new String(baos.toByteArray(), java.nio.charset.StandardCharsets.UTF_8);
बाद से उपलब्ध का उपयोग करें , यह फेंक नहीं है
ByteArrayOutputStream.close()
" इसका कोई प्रभाव नहीं है ", क्योंकि बैकिंग सरणी के अलावा मुक्त करने के लिए कोई संसाधन नहीं हैं, जो कचरा कलेक्टर द्वारा निपटा जाएगा।
ByteArrayOutputStream
है toString(String charsetName)
, लेकिन केवल स्ट्रिंग तर्क स्वीकार करते हैं। यह भी ध्यान रखें कि ByteArrayOutputStream है सिंक्रनाइज़ , जो शायद वांछनीय नहीं है
आप एक बाइट के साथ एक PrintStream का निर्माण कर सकते हैं। TheOrrayOutputStream कंस्ट्रक्टर में पास किया गया है जिसे आप बाद में PrintStream में लिखे गए टेक्स्ट को हथियाने के लिए उपयोग कर सकते हैं।
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
...
String output = os.toString("UTF8");
पिछले उत्तरों का एक एकीकरण, यह उत्तर जावा 1.7 और उसके बाद काम करता है। इसके अलावा, मैंने धाराओं को बंद करने के लिए कोड जोड़ा।
final Charset charset = StandardCharsets.UTF_8;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos, true, charset.name());
yourFunction(object, ps);
String content = new String(baos.toByteArray(), charset);
ps.close();
baos.close();
शायद यह सवाल आपकी मदद कर सकता है: एक आउटपुट स्ट्रिंग में जाओ
Subclass OutputStream और इसे PrintStream में लपेटें
इनर नाम के एक स्कैनर चर को परिभाषित और आरंभ करें जो स्ट्रिंग चर myStrLine का उपयोग करके एक इनपुट स्ट्रिंग स्ट्रीम बनाता है।
Ans: स्कैनर inSS = नया स्कैनर (myStrLine);