开发者

Creating a File from byte array

开发者 https://www.devze.com 2023-01-15 20:10 出处:网络
So - I\'ve got a third party library that needs a File as input.I\'ve got a by开发者_开发问答te array.

So - I've got a third party library that needs a File as input. I've got a by开发者_开发问答te array.

I don't want to write the bytes to disk .. I'd like to keep this in memory. Any idea on how I can create a File from the provided byte array (without writing to disk)?


Sorry, not possible. A File is inherently an on-disk entity, unless you have a RAM disk - but that's not something you can create in Java.

That's exactly the reason why APIs should not be based on File objects (or be overloaded to accept an InputStream).


There's one possibility, but it's a real long-shot.

If the API uses new FileReader(file) or new FileInputStream(file) then you're hosed, but...

If it converts the file to a URL or URI (using toURL() or toURI()) then, since File is not final, you can pass in a subclass of File in which you control the construction of the URL/URI and, more importantly, the handler.

But the chances are VERY slim!


So I see there is an accepted answer (and this is old), but I found a way to do this. I was using the IDOL On Demand API and needed to convert a byte array to a File.

Here is an example of taking a byte array of an image and turning into a 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);

And so outputfile is a File that can be used later in your program.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号