是否有FileOutputStream类型的替代品,它不会创建文件?

时间:2013-07-11 14:01:47

标签: java android

要在我的Android应用程序中处理一些图像,我目前使用这样的代码:

   FileOutputStream fileOuputStream = new FileOutputStream(imgpath);
   [..DO SOME STUFF..]
   Bitmap data = BitmapFactory.decodeByteArray(bFile, 0, bFile.length, options);
   data.compress(Bitmap.CompressFormat.JPEG, 90, fileOuputStream);
   [..DO SOME STUFF..]              
   File file = new File(imgpath);   
   FileInputStream imageInFile = new FileInputStream(file);
   byte imageData[] = new byte[(int) file.length()];
   imageInFile.read(imageData);
   [..DO SOME STUFF..]
   file.delete();
   //NOTE: The code is all in the same method

问题是使用此方法将我的图像从代码的一部分传递到另一部分会创建一个临时文件。

我一直在寻找一种使用内存变量读取/写入文件数据的方法,比如“泛型流”,其中存储数据以替换使用“FileInputStream”和“FileOutputStream”而不写临时文件

2 个答案:

答案 0 :(得分:2)

如果您能够使用InputStreamOutputStream,则可以使用ByteArrayInputStreamByteArrayOutputStream进行内存处理。

如果你有两个线程,你也可以一起使用PipedInputStreamPipedOutputStream在线程之间进行通信。

答案 1 :(得分:1)

您可以将数据写入ByteArrayOutputStream并使用该流的字节数组:

ByteArrayOutputStream out = new ByteArrayOutputStream();
data.compress(Bitmap.CompressFormat.JPEG, 90, out); 

// now take the bytes out of your Stream
byte[] imgData = out.toByteArray();