Copie de fichier en Java api 1.1.8

Résolu
gege_13 Messages postés 12 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 27 septembre 2005 - 29 août 2005 à 09:26
gege_13 Messages postés 12 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 27 septembre 2005 - 29 août 2005 à 13:56
Bonjour,

J'ai un énorme problème que je n'arrive pas résoudre. J'aimerais
trouver une méthode qui me permette de copier un fichier dans un autre
répertoire. A premier abord, ca a l'air plutôt facile...le souci est
que je dois absolument utiliser le jdk 1.1.8.

J'ai cherché un peu partout mais rien n'y fait, j'ai rien trouvé à part ce morceau de code:



public boolean copy(File inputfile, File outputfile) throws Exception

{

boolean p=true;



try{

if (inputfile.isFile())

{


FileReader in = new FileReader(inputfile);


FileWriter out = new FileWriter(outputfile);

int c;



while ((c = in.read()) != -1)

out.write(c);



in.close();

out.close();

}

}catch(Exception e){p=false;

throw new
Exception("ERROR in copying "+inputfile.getName()+" :"+e.getMessage());}

return p;

}



le souci avec cette méthode est que c'est extrêmement lent, or je dois copier des fichiers avec une capacité importante.

Existerai t'il un autre moyen?



Merci pour vos réponses

Gégé

2 réponses

gege_13 Messages postés 12 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 27 septembre 2005
29 août 2005 à 13:56
Merci pour ta réponse,

mais renameTo permet de déplacer un fichier, moi je souhaite le copier.

Cependant j'ai quand meme trouvé, il fallait faire ca:



public static boolean copier( File source, File destination )

{

boolean resultat = false;



// Declaration des flux

java.io.FileInputStream sourceFile=null;

java.io.FileOutputStream destinationFile=null;



try {

// Création du fichier :

//destination.createNewFile();



// Ouverture des flux


sourceFile = new java.io.FileInputStream(source);


destinationFile = new java.io.FileOutputStream(destination);



// Lecture par segment de 0.5Mo

byte buffer[]=new byte[512*1024];

int nbLecture;




while( (nbLecture = sourceFile.read(buffer)) != -1 ) {


destinationFile.write(buffer, 0, nbLecture);

}



// Copie réussie

resultat = true;

} catch( java.io.FileNotFoundException f ) {



} catch( java.io.IOException e ) {



} finally {


// Quoi qu'il arrive, on ferme les flux

try {


sourceFile.close();

} catch(Exception e) { }

try {


destinationFile.close();

} catch(Exception e) { }

}

return( resultat );

}



J'ai enlevé la méthode createNewFile() de l'api 1.2 et ca marche aussi

Gégé
3
scaryman Messages postés 492 Date d'inscription vendredi 30 janvier 2004 Statut Membre Dernière intervention 16 mai 2007 12
29 août 2005 à 13:17
salut

tu peux utiliser la méthode renameTo(File)

cette méthode change le chemin d'accès au fichier

mais si tu veux copier des fichiers importants c'est normal que ca
prenne du temps, si tu fais copier/coller dans l'explorateur ca prends
du temps aussi

voila a++
0
Rejoignez-nous
A voir également