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

  FORUM HardWare.fr
  Programmation
  Java

  Commande copy

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commande copy

n°600738
meumeul
Stay Heavy
Posté le 02-01-2004 à 15:17:07  profilanswer
 

Bonjour,  
Je cherche à écrire la comme copy (ou cp ) en java.
Je ne trouve pas de méthode parmettant cela
(genre static boolean copy(string f1, string s2))
Quelqun a til une udée?
 
(je n'ai rien trouvé dans les precedants posts non plus)
 
Merci bcp!

mood
Publicité
Posté le 02-01-2004 à 15:17:07  profilanswer
 

n°600761
nerisson
Pic-pic
Posté le 02-01-2004 à 15:43:26  profilanswer
 

Code :
  1. public static void copyFileBuffered(final String currentFile, final String newFile, final int bufferSize) throws FileNotFoundException, IOException {
  2.     final BufferedReader in = new BufferedReader(new FileReader(currentFile), bufferSize * 1024);
  3.     try {
  4.       final BufferedWriter out = new BufferedWriter(new FileWriter(newFile), bufferSize * 1024);
  5.       try {
  6.         int s = in.read();
  7.         while(s != -1) {
  8.           out.write(s);
  9.           s = in.read();
  10.         }//end while
  11.         out.flush();
  12.       } finally {
  13.         out.close();
  14.       }//end try
  15.     } finally {
  16.       in.close();
  17.     }//end try
  18.   }//end copyFileBuffered


---------------
Light is right
n°600820
Bufff
Posté le 02-01-2004 à 16:35:16  profilanswer
 

Il ne faut pas utiliser un Reader pour lire le fichier, mais un InputStream. De même, il faut utiliser un OutputStream, et pas un Writer pour écrire. Les Reader/Writer sont faits uniquement pour le texte.

Code :
  1. public static void copyFileBuffered(final String currentFile, final String newFile, final int bufferSize) throws FileNotFoundException, IOException {
  2.    final BufferedInputStream in = new BufferedInputStream(new FileInputStream(currentFile), bufferSize * 1024);
  3.    try {
  4.      final BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(newFile), bufferSize * 1024);
  5.      try {
  6.        int s = in.read();
  7.        while(s != -1) {
  8.          out.write(s);
  9.          s = in.read();
  10.        }//end while
  11.        out.flush();
  12.      } finally {
  13.        out.close();
  14.      }//end try
  15.    } finally {
  16.      in.close();
  17.    }//end try
  18. }//end copyFileBuffered

n°601138
meumeul
Stay Heavy
Posté le 03-01-2004 à 01:04:14  profilanswer
 

ben dis donc, merci les gars.
Mé pkoi on spécifie une tailee de buffer ? c nécaissaire? ca optimise?

n°601142
nraynaud
lol
Posté le 03-01-2004 à 01:06:57  profilanswer
 

c'est sensé optimiser, mais comme les entrée-sorties sont déjà bufferisées par le système, ça doit pas changer énormément.


---------------
trainoo.com, c'est fini
n°601147
meumeul
Stay Heavy
Posté le 03-01-2004 à 01:13:52  profilanswer
 

oki c bien ce que je pensé. et il me semble que 1024 c le nombre par défaut.  
Mé je pense qu'a partir dun certains nombre ca devient moins otpimisé? genre je met 32 ko? ou bien plus encore
 
ah oui pi encore un truc, les final c obligé?
et le bloc finally aussi? pkoi?


Message édité par meumeul le 03-01-2004 à 01:15:55
n°601148
nraynaud
lol
Posté le 03-01-2004 à 01:16:38  profilanswer
 

la dernière fois, j'ai entendu parler de 4 ou 8ko, mais je me souviens plus de l'OS/plateforme.
de toutes façon 1Ko c'est ridicule, 8-10ko c'est le mini pour voir un peu de différence je pense.


---------------
trainoo.com, c'est fini
n°604575
benou
Posté le 07-01-2004 à 11:29:03  profilanswer
 

Code :
  1. package utils;
  2. import java.io.*;
  3. public class StreamUtils {
  4. public static void copy (final InputStream inStream, final OutputStream outStream, final int bufferSize) throws IOException {
  5.  final byte[] buffer = new byte[bufferSize];
  6.  int nbRead;
  7.  while ((nbRead = inStream.read(buffer)) != -1) {
  8.   outStream.write(buffer, 0, nbRead);
  9.  }
  10. }
  11. public static void copy (final File from, final File to) throws IOException {
  12.  final InputStream inStream = new FileInputStream(from);
  13.  final OutputStream outStream = new FileOutputStream(to);
  14.  copy(inStream, outStream, (int) Math.min(from.length(), 4*1024));
  15.  inStream.close();
  16.  outStream.close();
  17. }
  18. }


 
edit : closage de stream !  :fou:
edit2 : encore une coorrection de  bug :fou: :fou:


---------------
ma vie, mon oeuvre - HomePlayer

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

  Commande copy

 

Sujets relatifs
script php sur commandecommande pour la saisie d'un paramètre ?
[PHP] Commande switch : meilleur méthode[SGBD]acceder au demon mysql de easyphp en ligne de commande?
asp : ligne de commande (winzip)[VB] commande shell et kill de processus
Commande make[Python@Blender] Ligne de commande pour executer un script python ?
[XSLT] commande copy-ofCommande Batch [ COPY ] sous win 2000 server
Plus de sujets relatifs à : Commande copy


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