Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2023 connectés 

 



Dernière réponse
Sujet : [java] Data Stream
benou je crois que la raison pour laquelle ca marchait pas avec ton buffer c'est que tu vérifiait pas si tout le biffer avait été remplit avant de le copier.
 
et 9 chances sur 10 pour que ton fichier n'est pas un nombre de bytes multiples de 10 => lors de la dernière copie, tu mettais des bytes en trop.
 
je crois que si tu remplace ta boucle par ca, ca devrait marcher (à vérifier) :
   
  int nbRead;
  while ((nbRead = bis.read(buffer)) != -1) {  
   bos.write(buffer,0,nbRead);  
  }  
 
ca devrait optimiser la copie : même si tu utilise des bufferedStream, ca diminuera quand même le nombre d'itération de ta boucle. D'aileur tu devrais mettre un buffer plus grand.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
benou je crois que la raison pour laquelle ca marchait pas avec ton buffer c'est que tu vérifiait pas si tout le biffer avait été remplit avant de le copier.
 
et 9 chances sur 10 pour que ton fichier n'est pas un nombre de bytes multiples de 10 => lors de la dernière copie, tu mettais des bytes en trop.
 
je crois que si tu remplace ta boucle par ca, ca devrait marcher (à vérifier) :
   
  int nbRead;
  while ((nbRead = bis.read(buffer)) != -1) {  
   bos.write(buffer,0,nbRead);  
  }  
 
ca devrait optimiser la copie : même si tu utilise des bufferedStream, ca diminuera quand même le nombre d'itération de ta boucle. D'aileur tu devrais mettre un buffer plus grand.
cthulhu ok, voici la solution qui marche:

Code :
  1. try{
  2.   String s=null;
  3.   int test=0;
  4.   is = urls[compt].openStream();
  5.   bis = new BufferedInputStream(is);
  6.   bos = new BufferedOutputStream(new FileOutputStream(destDir+urls[compt].getFile()));
  7.   test=bis.read();
  8.   while (test != -1) {
  9.    bos.write(test);
  10.    test=bis.read();
  11.   }
  12.   bis.close();
  13.   bos.flush();
  14.   bos.close();
  15.   is.close();
  16.  }


merci iskream

cthulhu ok, voici ma modif, ca marche toujours pas...
 

Code :
  1. try{
  2.   String s=null;
  3.   byte buffer[]=new byte[10];
  4.   is = urls[compt].openStream();
  5.   bis = new BufferedInputStream(is);
  6.   bos = new BufferedOutputStream(new FileOutputStream(destDir+urls[compt].getFile()));
  7.   while (bis.read(buffer) != -1) {
  8.    bos.write(buffer,0,10);
  9.   }
  10.   bis.close();
  11.   bos.flush();
  12.   bos.close();
  13.   is.close();
  14.  }

iskream il faudrait que tu boucles sur ton BufferedInputStream, et éviter de le convertir en DataXXXStream, et ca ira mieux.
cthulhu Salut à tous voici mon probleme,  
je voudrais faire une copie ded fichier en JAVA en utilisant des streams.
Jusquici, jy arrivais avec des fichiers texte, loin detre tres difficile... mais une fois quon passe a de lexecutable...
alors voila, si qqn pouvais maider, jusquici, jutilisais un system du type:

Code :
  1. byte buffer[]=new byte[10];
  2.   dis = new DataInputStream(new BufferedInputStream(inputstrem));
  3.   dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(destDir+filename));
  4.   while (dis.read(buffer) != -1) {
  5.    dos.write(buffer,0,10);
  6.   }


Merci d'avance


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR