所以 - 我有一个需要File
作为输入的第三方库,我有一个byte array
。
我不想将字节写入磁盘..我希望将其保存在内存中。 你有任何想法吗?如何从提供的byte array
创建一个File
(而不写入磁盘)?
很抱歉,这是不可能的。文件本质上是一个磁盘实体,除非您有一个RAM磁盘 - 但这不是您可以在Java中创建的。
这正是为什么API不应该基于File对象(或者重载为接受InputStream)的原因。
new FileReader(file)
或new FileInputStream(file)
,那么您就没有办法了,但是...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
,可以在程序中稍后使用。