Also - Ich habe eine Drittanbieter-Bibliothek, die ein File
als Eingabe benötigt. Ich habe eine byte array
.
Ich möchte die Bytes nicht auf Festplatte schreiben. Ich möchte das im Speicher behalten. Irgendeine Idee, wie ich ein File
von dem bereitgestellten byte array
erstellen kann (ohne auf Platte zu schreiben)?
Sorry, nicht möglich. Eine Datei ist von Natur aus eine Entität auf der Festplatte, es sei denn, Sie haben eine RAM-Disk - aber das können Sie nicht in Java erstellen.
Das ist genau der Grund, warum APIs nicht auf Dateiobjekten basieren sollten (oder überlastet sein sollten, um einen InputStream zu akzeptieren).
Es gibt eine Möglichkeit, aber es ist eine echte Long-shot.
Wenn die API new FileReader(file)
oder new FileInputStream(file)
verwendet, dann sind Sie abgespritzt, aber ...
Wenn die Datei in eine URL oder einen URI konvertiert wird (mit toURL()
oder toURI()
), können Sie, da File
nicht endgültig ist, eine Unterklasse von File
übergeben, in der Sie die Konstruktion von die URL / URI und, noch wichtiger, den Handler.
Aber die Chancen sind sehr dünn!
Also ich sehe, es gibt eine akzeptierte Antwort (und das ist alt), aber ich habe einen Weg gefunden, dies zu tun. Ich benutzte die IDOL On Demand API und musste ein byte array
in ein File
umwandeln.
Hier ist ein Beispiel, wie man ein byte array
eines Bildes nimmt und in ein File
verwandelt:
Und so outputfile
ist ein File
, das später in Ihrem Programm verwendet werden kann.