所以 - 我有一個需要File
作爲輸入的第三方庫。我有一個byte array
。從字節數組創建文件
我不想寫字節到磁盤..我想保留在內存中。有關如何從提供的byte array
(無需寫入磁盤)創建File
的任何想法?
所以 - 我有一個需要File
作爲輸入的第三方庫。我有一個byte array
。從字節數組創建文件
我不想寫字節到磁盤..我想保留在內存中。有關如何從提供的byte array
(無需寫入磁盤)創建File
的任何想法?
對不起,不可能。一個文件本質上是一個磁盤上的實體,除非你有一個RAM磁盤 - 但這不是你可以用Java創建的。
這就是爲什麼API不應該基於File對象(或被重載以接受InputStream)的原因。
有一種可能性,但它是一個真正的遠射。
如果API使用new FileReader(file)
或new FileInputStream(file)
那麼你大清洗,但...
如果將文件轉換爲URL或URI(使用toURL()
或toURI()
)然後,因爲File
不是終點,你可以傳入File
的子類,其中您可以控制URL/URI的構造,更重要的是處理程序。
但是機會非常渺茫!
所以我看到有一個公認的答案(這是舊的),但我找到了一種方法來做到這一點。我使用的是IDOL On Demand API,需要將byte array
轉換爲File
。
這裏是拍攝圖像的byte array
並變成一個File
一個例子:
//imageByte is the byte array that is already defined
BufferedImage image = null;
ByteArrayInputStream bis = new ByteArrayInputStream(imageByte);
image = ImageIO.read(bis);
bis.close();
// write the image to a file
File outputfile = new File("image.png");
ImageIO.write(image, "png", outputfile);
所以outputfile
是,以後可以在你的程序中使用的File
。
如果你有第三方庫的源代碼,你可以修改它。只要確保你知道你在做什麼。 – 2010-09-13 21:53:28