从字节数组创建文件
问题描述:
所以 - 我有一个需要File
作为输入的第三方库。我有一个byte array
。从字节数组创建文件
我不想写字节到磁盘..我想保留在内存中。有关如何从提供的byte array
(无需写入磁盘)创建File
的任何想法?
答
对不起,不可能。一个文件本质上是一个磁盘上的实体,除非你有一个RAM磁盘 - 但这不是你可以用Java创建的。
这就是为什么API不应该基于File对象(或被重载以接受InputStream)的原因。
答
有一种可能性,但它是一个真正的远射。
如果API使用new FileReader(file)
或new FileInputStream(file)
那么你大清洗,但...
如果将文件转换为URL或URI(使用toURL()
或toURI()
)然后,因为File
不是终点,你可以传入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
。
如果你有第三方库的源代码,你可以修改它。只要确保你知道你在做什么。 – 2010-09-13 21:53:28