Создание файла из массива байтов

Итак-у меня есть сторонняя библиотека, которая нуждается в File в качестве входных данных. У меня есть byte array.

Я не хочу записывать байты на диск .. Я бы хотел сохранить это в памяти. Любая идея о том, как я могу создать File из byte array (без записи на диск)?

3 ответов


извините, невозможно. Файл по своей сути является сущностью на диске, Если у вас нет RAM - диска, но это не то, что вы можете создать в Java.

именно по этой причине API не должны основываться на файловых объектах (или быть перегружены, чтобы принять 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 Это можно использовать позже в вашей программе.