从字节数组创建文件

所以 – 我有一个需要File作为输入的第三方库。 我有一个byte array

我不想把字节写入磁盘..我想把它保存在内存中。 关于如何从提供的byte array创建File (无需写入磁盘)的任何想法?

对不起,不可能。 文件本质上是一个磁盘上的实体,除非你有一个RAM磁盘 – 但这不是你可以用Java创建的东西。

这就是为什么API不应该基于File对象(或者重载以接受InputStream)的原因。

有一种可能性,但这是一个真正的长镜头。

如果API使用new FileReader(file)new FileInputStream(file)那么你就被软管了,但……

如果它将文件转换为URL或URI(使用toURL()toURI() ),那么,由于File不是final,您可以传入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