lecture/écriture binaire (depuis URL) [Résolu]

lecture/écriture binaire (depuis URL) [Résolu] - Java - Programmation

Marsh Posté le 15-04-2005 à 17:04:54    

Bonjour,
 
j'ai besoin de faire un petit logiciel qui va chercher un .zip sur internet et le télécharge.
 
J'ai fait un code pour télécharger le fichier, puis le dézipper. Tout fonctionne très bien, mais c'est extremement lent. Sur les ordis de l'école tout se fait à 1ko/s, pourtant c'est de bon ordis. Ce problème vient-il de la lenteur de java ou de mon code qui est pas efficace?
 
J'ai trouvé nulle part une autre méthode pour lire/écrire en binaire.
 
Voici mon code pour télécharger le fichier et l'écire sur le disque:  
 

Code :
  1. /* connexion est une URL  
  2. j'ai enlever les parties du code inutiles, qui servait à l'affichage.
  3. */
  4. File rep=new File("patchs" );
  5. if(!rep.exists())
  6. {
  7.  rep.mkdir();
  8. }
  9. File fichierEcrit=new File(rep,fichier);
  10. fichierEcrit.createNewFile();
  11.   InputStream   fluxFichier = connexion.getInputStream ();
  12. DataOutputStream monFlotDeDonnnees =new DataOutputStream(new
  13. FileOutputStream(fichierEcrit));
  14. /* lecture et écriture des données */
  15.  while ((unOctet = fluxFichier.read()) != -1)
  16.  {
  17.   monFlotDeDonnnees.write(unOctet);
  18.  }
  19.  fluxFichier.close();
  20.  monFlotDeDonnnees.close();

 
 
Merci d'avance  :jap:


Message édité par fox25 le 16-04-2005 à 17:32:21
Reply

Marsh Posté le 15-04-2005 à 17:04:54   

Reply

Marsh Posté le 16-04-2005 à 02:51:53    

ben euh, tu lis octet par octer aussi, c'est ptet pas le plus efficace. va voir le tuto de sun sur les i/o, ils parlent un peu de tout ça, et tu verras les autres methodes read()


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 16-04-2005 à 02:52:35    

et je vois pas DU TOUT pourquoi tu passes par un DataOutputStream ?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 16-04-2005 à 11:56:26    

ca vaudrait aussi le coup de mettre un petit bufferedInputStream pour voir si ca arrange les choses ...

Reply

Marsh Posté le 16-04-2005 à 16:14:59    

the real moins moins a écrit :

et je vois pas DU TOUT pourquoi tu passes par un DataOutputStream ?


Pourquoi ne faut-il pas que j'utiliser un DataOutputStream ? je devrais utiliser quoi à la place?
 
et comment faire pour lire plus qu'un byte? j'ai essayé avec un tablea de byte, mais le fichier était mal écrit après (zip corrompu)

Reply

Marsh Posté le 16-04-2005 à 16:18:44    

fox25 a écrit :

Pourquoi ne faut-il pas que j'utiliser un DataOutputStream ? je devrais utiliser quoi à la place?
 
et comment faire pour lire plus qu'un byte? j'ai essayé avec un tablea de byte, mais le fichier était mal écrit après (zip corrompu)


ben t'as lu la doc des classes que tu utilises au moins? c'est écrit noir sur blanc dans les 2 premieres lignes, l'utilité d'un DataOutputStream ..
 
 
et je t'ai pas déjà conseillé d'aller lire le tuto sur les i/o ? :heink:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 16-04-2005 à 16:27:36    

the real moins moins a écrit :

ben t'as lu la doc des classes que tu utilises au moins? c'est écrit noir sur blanc dans les 2 premieres lignes, l'utilité d'un DataOutputStream ..
 
 
et je t'ai pas déjà conseillé d'aller lire le tuto sur les i/o ? :heink:


 
 

Citation :

A data output stream lets an application write primitive Java data types to an output stream in a portable way. An application can then use a data input stream to read the data back in.


 
Et, pourquoi je dois pas l'utiliser?

Reply

Marsh Posté le 16-04-2005 à 17:17:09    

benou a écrit :

ca vaudrait aussi le coup de mettre un petit bufferedInputStream pour voir si ca arrange les choses ...


 
 
j'ai mis des buffer un peu partout, ça va nettement plus vite  :) , merci pour l'aide précise.
 
Par contre j'aimerais quand même lire plusieurs byte à la fois, mais je trouve pas de tuto sur ça. (si j'utiliser un tableau de bytes et que je met ça taille à 1 tout marche très bien, si j'en met plus, ça marche plus  :cry: )

Reply

Marsh Posté le 16-04-2005 à 17:22:30    

fox25 a écrit :


Par contre j'aimerais quand même lire plusieurs byte à la fois, mais je trouve pas de tuto sur ça. (si j'utiliser un tableau de bytes et que je met ça taille à 1 tout marche très bien, si j'en met plus, ça marche plus  :cry: )


inspire toi de ca : http://forum.hardware.fr/forum2.ph [...] =8#t604575

Reply

Marsh Posté le 16-04-2005 à 17:26:29    


 
 
merci, c'est bon ça marche enfin. C'est vraiment sacrément plus vite.  
 
Mon erreur venait que j'utilisait pas le write(buffer, off, len) mais le simple write(buffer). Je pensait que ça gerait tout seul ce qu'il arrivait à prendre  :(  .
 
 
Merci beaucoup pour ton aide  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed