在Android应用程序中,我发送了一张来自Camera Intent
的图片,因此我需要将Bitmap
转换为一个字节数组。要做到这一点我使用ByteArrayOutputStream
如下:在Android应用程序中关闭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;
}
一切正常,所有,真正的问题是的Javadoc和于Android的文档之间ByteArrayOutputStream
文档中的差异。
的Javadoc读取
关闭一个ByteArrayOutputStream没有效果。
的Android doc写着:
关闭此流。这释放用于此流的系统资源。
我正在关闭流无论如何,但我想知道哪些文档是正确的,为什么他们不同。
第一个和第二个都是正确的,取决于outputstrem的实现,关闭一个baos,什么都不做。但是总是关闭流是一个很好的习惯,不管他们来自哪里 – epoch 2013-03-13 09:58:52
你是否担心在调用close函数时,字节数组之间会发生什么? – Perception 2013-03-13 10:02:33
@epoch,但问题是:**为什么当它什么都不做时需要关闭这个流?** – waqaslam 2013-03-13 10:05:49