8
votes

Création d'un fichier de Byte Array

Donc, j'ai une bibliothèque tierce partie qui nécessite un fichier comme entrée. J'ai un tableau octet .

Je ne veux pas écrire les octets sur le disque .. J'aimerais garder cela en mémoire. Toute idée sur la façon dont je peux créer un fichier à partir du tableau d'octet fourni (code> (sans écrire sur le disque)?


1 commentaires

Si vous avez le code source à la bibliothèque tiers, vous pouvez le modifier. Assurez-vous simplement de savoir ce que vous faites.


3 Réponses :


10
votes

Désolé, pas possible. Un fichier est intrinsèquement une entité sur disque, sauf si vous avez un disque RAM - mais ce n'est pas quelque chose que vous pouvez créer en Java.

C'est exactement la raison pour laquelle les API ne doivent pas être basées sur des objets de fichier (ou être surchargés pour accepter une introuveam).


4 commentaires

Qu'en est-il de l'utilisation de RandomAccessFile?


Cela n'exprime pas le fichier ou ainsi. Vivez avec elle (et blâmez ces auteurs API tiers pour une API si imparfait, ce que vous pouvez essayer de poster un rapport de bogue à leur émettracker).


Correct, et l'objet java.io.file est simplement une représentation abstraite du chemin. J'ai des bibliothèques de tiers décompilées et mises à jour pour moins, mais vous devriez être capable de vous éloigner d'écrire un fichier avec un nom de guid sur un répertoire TMP, puis de passer ce chemin sur.


Pas tout à fait ... il a également une fonctionnalité utile pour renvoyer une URL ou une URI pouvant être exploitée ... Voir ma réponse ci-dessous.



3
votes

Il y a une possibilité, mais c'est un vrai coup long.

Si l'API utilise Nouveau fichier FilerAder (Fichier) ou Nouveau fichierInputtream (fichier) alors vous êtes hosté, mais ...

S'il convertit le fichier en une URL ou un URI (à l'aide de Tourl () ou touri () ) puis, puisque n'est pas Final, vous pouvez passer dans une sous-classe de fichier dans lequel vous contrôlez la construction de l'URL / URI et, plus important encore, le gestionnaire.

Mais les chances sont très minces!


0 commentaires

0
votes

Je vois donc qu'il y a une réponse acceptée (et c'est vieux), mais j'ai trouvé un moyen de faire cela. J'utilisais l'API d'Idol sur demande et devait convertir un tableau octet vers un fichier .

Voici un exemple de prenant un tableau d'octet d'une image et de la transformation en un fichier : xxx

Et donc de sortiefile est un fichier qui peut être utilisé plus tard dans votre programme.


0 commentaires