从字节数组创建文件

时间:2010-09-13 21:26:44

标签: java file-io bytearray

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

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

3 个答案:

答案 0 :(得分:10)

抱歉,不可能。文件本质上是一个磁盘上的实体,除非你有一个RAM磁盘 - 但这不是你可以用Java创建的。

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

答案 1 :(得分:3)

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

如果API使用new FileReader(file)new FileInputStream(file),那么您就会被软管,但......

如果它将文件转换为URL或URI(使用toURL()toURI()),那么,由于File不是最终的,您可以传入{{1}的子类您可以在其中控制URL / URI的构造,更重要的是控制处理程序。

但是机会非常渺茫!

答案 2 :(得分:0)

所以我看到有一个已接受的答案(这是旧的),但我找到了一种方法来做到这一点。我使用的是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);

所以outputfileFile,可以在以后的程序中使用。