COPIER DES FICHIERS

Signaler
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006
-
cyriprog
Messages postés
2
Date d'inscription
samedi 29 juillet 2006
Statut
Membre
Dernière intervention
23 octobre 2008
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39568-copier-des-fichiers

cyriprog
Messages postés
2
Date d'inscription
samedi 29 juillet 2006
Statut
Membre
Dernière intervention
23 octobre 2008

1) Le 10Ko correspond à la taille du buffer de copie. C'est le tableau qui contient les données en provenance du fichier à copier et à destination du fichier de destination. En somme plus la taille de ce tableau est élevé, moins tu feras d'accès au disque mais plus cela nécessitera de mémoire dans ton application java.

2) Il est exacte que j'ai beaucoup complexifié le travail mais lorsque j'écrit des fichiers tels que celui-ci j'aime à ce qu'il y ait autant de fonctionnalités que possible (toutes celles auxquelles je pense) et que les données soit paramétrables au maximum (ça peut toujours être utile).

3) Pour ce qui est de faire une copie simple de fichier, tu dispose de la dernières méthodes du fichier :

public static void copier(String ficLu, String ficEcrit) throws IOException;
pch_hotline
Messages postés
4
Date d'inscription
mardi 4 avril 2006
Statut
Membre
Dernière intervention
3 novembre 2008

moi je comprends pas pourquoi ce 10Ko qu'il traine partout. Aucune methode pour faire de la copie de fichier simplement comme tous les shells le proposent. Je trouve c un avis personnel que tu as complique un boulot simple
cs_neodante
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
Effectivement, aucun flux n'est fermés :s, merci de corriger cela rapidement. Ah ces nouveaux codeurs Java !!! :p (c gentil ;-))
cs_iubito
Messages postés
629
Date d'inscription
mercredi 3 juillet 2002
Statut
Membre
Dernière intervention
9 octobre 2006

Par hasard, n'oublierais-tu pas de fermer tes streams ? Voici le code propre, avec fermeture des streams sur un finally d'un try. Car si tu as une exception au milieu de la copie (mémoire ou disque plein par exemple), il faut bien fermer les stream, sinon ton fichier sera toujours marqué comme "tenu" en écriture, et tu auras du mal à l'ouvrir par exemple.

FileInputStream read = new FileInputStream(ficLu);
try {
FileOutputStream write = new FileOutputStream(ficEcrit);
try {
byte[] tabLu = new byte[tailleCopie];
int nbLu;
while((nbLu = read.read(tabLu)) > 0){
write.write(tabLu,0,nbLu);
}
} finally {
write.close();
}
} finally {
read.close();
}