Convertir InputStream en FileInputStream
J'ai lu ce post Comment convertir InputStream à FileInputStream sur la conversion d'un InputStream dans un FileInputStream. Toutefois, la réponse ne fonctionne pas si vous utilisez une ressource dans un fichier jar. Est-il une autre façon de le faire.
J'ai besoin pour cela d'obtenir le FileChannel
à partir d'un appel à
Object.class.getResourceAsStream(resourceName);
Pourquoi avez-vous besoin? En général, il y a peut-être pas un tel objet.
OK, je vais mordre: pourquoi avez-vous besoin FileChannel ?
Il y a une fonction de copie que je suis en train d'utiliser.
Notez que plus de FileChannel.transferTo() -- ce qui nécessite la source à un FileChannel -- il y a aussi FileChannel.transferFrom(), qui exige que la destination de l'être.
OK, je vais mordre: pourquoi avez-vous besoin FileChannel ?
Il y a une fonction de copie que je suis en train d'utiliser.
Notez que plus de FileChannel.transferTo() -- ce qui nécessite la source à un FileChannel -- il y a aussi FileChannel.transferFrom(), qui exige que la destination de l'être.
OriginalL'auteur user489041 | 2011-03-18
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas, sans fondamentalement en écriture à un fichier. Sauf si il y a un fichier, il ne peut pas être un
FileInputStream
ou unFileChannel
. Si possible, assurez-vous que votre code est agnostique sur la source d'entrée - conception en termes deInputStream
etByteChannel
(ou quel que soit le type de canal est le plus approprié).OriginalL'auteur Jon Skeet
De l'InputStream retourné en Classe.getResourceAsStream(), vous pouvez faire un Canal avec Les canaux.newChannel( InputStream ).
Ce n'est pas le FileChannel que vous avez demandé, mais il est encore un Canal. Est-il suffisant pour répondre à vos besoins?
OriginalL'auteur Andy Thomas
Si vous avez vraiment besoin d'un fichier et vous savez que la ressource n'est pas à l'intérieur d'un bocal ou chargé à distance, vous pouvez utiliser
getResource
à la place.Si vous n'avez pas absolument besoin d'un
FileChannel
ou ne pouvez pas faire des hypothèses sur la façon dont votre classpath est présenté, puis Andy Thomas-de Cramer solution est probablement la meilleure.Dans ce cas, vous ne pouvez pas le faire sans le montage du pot comme un fichier système en quelque sorte. Un fichier de canal suppose un fichier. cheers
OriginalL'auteur Mike Samuel