Sapu
Sapu

Reputation: 81

How to create an instance of java.io.File from a byte[] without saving the file to the disk

I must use an existing method: method.invoke(myClassLoader, myFile.toURI().toURL()); where myFile is an instance of File and I need to create it from a byte[] without saving the file on the disk, is this possible?

This is what I tried but it creates a file on the disk and writes it:

    byte[] bytes = ...;
    File tempFile = File.createTempFile("prefix", "suffix");
    FileOutputStream fos = new FileOutputStream(tempFile);
    fos.write(bytes);
    method.invoke(myClassLoader, tempFile.toURI().toURL());

Upvotes: 0

Views: 203

Answers (1)

BccHnw
BccHnw

Reputation: 442

The parameter of the invoked method is URL. You can use Jimfs (An in-memory file system for Java 7+) to create a file emulation in memory and get its URL (path.toUri().toURL()).

Upvotes: 1

Related Questions