So - I've got a third party library that needs a File
as input. I've got a byte 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)?
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 aFile
.Here is an example of taking a
byte array
of an image and turning into aFile
:And so
outputfile
is aFile
that can be used later in your program.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)
ornew FileInputStream(file)
then you're hosed, but...If it converts the file to a URL or URI (using
toURL()
ortoURI()
) then, sinceFile
is not final, you can pass in a subclass ofFile
in which you control the construction of the URL/URI and, more importantly, the handler.But the chances are VERY slim!