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

  FORUM HardWare.fr
  Programmation

  [java] Data Stream

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[java] Data Stream

n°66262
cthulhu
Merci, merci...
Posté le 19-10-2001 à 09:18:07  profilanswer
 

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

mood
Publicité
Posté le 19-10-2001 à 09:18:07  profilanswer
 

n°66265
iskream
Posté le 19-10-2001 à 09:36:13  profilanswer
 

il faudrait que tu boucles sur ton BufferedInputStream, et éviter de le convertir en DataXXXStream, et ca ira mieux.

n°66288
cthulhu
Merci, merci...
Posté le 19-10-2001 à 11:18:55  profilanswer
 

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.  }

n°66300
cthulhu
Merci, merci...
Posté le 19-10-2001 à 11:37:51  profilanswer
 

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

n°66483
benou
Posté le 19-10-2001 à 18:51:59  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [java] Data Stream

 

Sujets relatifs
Test d'applet JAVAjava sur Mac??????????????????
Est-il possible de faire un envoi groupé avec Java ?[java] probléme avec la methode setText()
Comment faire pour avoir les couleurs de 0 à 255 en javaDefi programmation JAVA ou autre
[JAVA SCRIPT] Problèm de ' dans un functionJava - problemes pour un debutant
[java]peut on transformer simplement une String en html ?[JAVA] boite de dialog
Plus de sujets relatifs à : [java] Data Stream


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