Creating a File from byte array

前端 未结 3 1479
你的背包
你的背包 2020-12-19 04:52

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

相关标签:
3条回答
  • 2020-12-19 05:21

    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 讨论(0)
  • 2020-12-19 05:33

    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).

    0 讨论(0)
  • 2020-12-19 05:33

    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!

    0 讨论(0)
提交回复
热议问题