COPIER DES FICHIERS

cs_iubito Messages postés 629 Date d'inscription mercredi 3 juillet 2002 Statut Membre Dernière intervention 9 octobre 2006 - 18 sept. 2006 à 04:48
cyriprog Messages postés 2 Date d'inscription samedi 29 juillet 2006 Statut Membre Dernière intervention 23 octobre 2008 - 23 oct. 2008 à 18:12
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
23 oct. 2008 à 18:12
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
23 oct. 2008 à 10:42
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 11
18 sept. 2006 à 09:33
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
18 sept. 2006 à 04:48
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();
}