एंड्रॉइड एप्लिकेशन में मैं Camera Intent
से ली गई तस्वीर भेज रहा हूं इसलिए मुझे Bitmap
को बाइट सरणी में बदलने की आवश्यकता है। ऐसा करने के लिए मैं इस प्रकार एक ByteArrayOutputStream
का उपयोग करें:एंड्रॉइड एप्लिकेशन में बंद ByteArrayOutputStream
private byte[] getRawImageData(Bitmap source) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] rawImageData = null;
try {
source.compress(CompressFormat.JPEG, DEFAULT_COMRESSION, baos);
rawImageData = baos.toByteArray();
} finally {
try {
baos.close();
} catch (IOException e) {
// handle exception here
}
}
return rawImageData;
}
सब कुछ ठीक काम करता है और सभी, असली सवाल जावाडोक और एंड्रॉयड से डॉक के बीच ByteArrayOutputStream
के दस्तावेज में अंतर है।
Javadoc पढ़ता
बंद करने पर एक ByteArrayOutputStream कोई प्रभाव नहीं है।
Android doc पढ़ता है:
इस धारा बंद करता है। यह इस स्ट्रीम के लिए उपयोग किए जाने वाले सिस्टम संसाधनों को रिलीज़ करता है।
मैं धारा को बंद कर रहा हूं इससे कोई फर्क नहीं पड़ता कि मैं क्या जानना चाहता हूं कि कौन सा दस्तावेज सही है और वे अलग क्यों हैं।
पहला और दूसरा सही है, आउटपुटस्ट्रेम कार्यान्वयन पर निर्भर करता है, एक बाओस बंद करता है, कुछ भी नहीं करता है। हालांकि, हमेशा धाराओं को बंद करने के लिए यह अच्छा अभ्यास है, इससे कोई फर्क नहीं पड़ता कि वे – epoch
कहां से आते हैं, क्या आप चिंतित हैं कि बाइट सरणी के अंतर्गत धाराओं के साथ क्या होता है, जब 'क्लोज़' कहा जाता है? – Perception
@epoch लेकिन समस्या यह है: ** इस स्ट्रीम को बंद करने की आवश्यकता क्यों है जब यह कुछ भी नहीं करता है?** – waqaslam