J'ai un logiciel qui permet d'écrire un complément dans les fichiers JavaScript (.js) qui permettent d'utiliser la fonction Java (je ne sais pas si cela est courant, je n'ai jamais vu java appeler dans le fichier JavaScript avant)
Je dois télécharger un fichier binaire d'un serveur Web et l'écrire sur le disque dur. J'ai essayé le code suivant: p> Le fichier résultant n'est plus une archive GZIP valide. Je suis désolé si j'ai fait une énorme erreur mais je ne suis pas un programmeur et je ne connais pas trop Java. P> p>
4 Réponses :
N'utilisez pas de FileWriter code>
- qui tente de convertir les données en texte.
Utilisez simplement FileOutPutStream code>. P>
byte[] buffer = new byte[8 * 1024];
InputStream input = urlConnect.getInputStream();
try {
OutputStream output = new FileOutputStream(filename);
try {
int bytesRead;
while ((bytesRead = input.read(buffer)) != -1) {
output.write(buffer, 0, bytesRead);
}
} finally {
output.close();
}
} finally {
input.close();
}
De plus, vous voudrez utiliser la bonne condition de test dans votre boucle tandis que: tandis que ((((((données = est B> .read ())! = Null) {...}.
Merci d'utiliser des œuvres FileOutputTream (j'utilise toujours seulement une simple lecture () car il semble qu'il ne soit pas possible d'utiliser un tampon d'octet en JavaScript car ce n'est pas un objet.
Il est également redondant, comme DataGuTream code> est destiné à lire les primitives Java, non pour les données génériques.
urlconnect.getinputStream (); code> renvoie déjà une intrigue, et Toutes les intrigions prises en charge Lecture (). P>
is = urlConnect.getInputStream();
Nice information! Intéressant d'apprendre que malgré ce que la nommée suggère DataGuTretstre n'est pas pour les données génériques ..!
Je sais que cette question est déjà répondu, mais une approche plus simple consiste à utiliser la méthode IOUTILS.COPY (CODE> IOUTILS.COPY () d'Apache Commons () CODE>, qui peut complètement copier un
InputStream code> à un
sortiestream code>. p>
Il suffit de lire sur LimitInputStrereStream comme il fait exactement ce que vous faites, tamponner le flux d'entrée pour une plus grande efficacité. P>