[java] Data Stream

Data Stream [java] - Programmation

Marsh Posté le 19-10-2001 à 09:18:07    

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

Reply

Marsh Posté le 19-10-2001 à 09:18:07   

Reply

Marsh Posté le 19-10-2001 à 09:36:13    

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

Reply

Marsh Posté le 19-10-2001 à 11:18:55    

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

Reply

Marsh Posté le 19-10-2001 à 11:37:51    

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

Reply

Marsh Posté le 19-10-2001 à 18:51:59    

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.

Reply

Sujets relatifs:

Leave a Replay

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