Bonjour,
Le sujet que je propose a déjà été vu mainte fois je pense car j'ai trouvé beaucoup de chose sur internet, le problème c'est que la seule méthode que j'ai trouvé qui avait fonctionné c'était de lire et d'écrire byte par byte.
Ça fonctionnait certes mais c'était particulièrement lent. La finalité de ma fonction c'est de renseigner un répertoire à l'appli qui en copie tout le contenu (qui ne sera constitué que d'images) pour les mettre dans un répertoire d'un serveur distant.
Pour l'instant l'histoire du serveur distant n'a pas d'importance, je bosse en local sur windows 7 avec des path en dur...
Donc mon problème en fait c'est qu'une image met une dixaine de seconde à être copiée (j'exagère à peine) en lisant et écrivant byte par byte. Comment gagner du temps dessus ? J'pense que ma méthode n'est pas la bonne en fait... Je vous montre mon code :
Voilà donc ça ça marche mais pas du tout assez vite... En fait je me demande si c'est pas à cause de l'échange qui n'est pas du tout assez optimisé, le fait de lire et d'écrire caractère par caractère... est ce que ça ne serait pas plus rapide de mettre dans une liste ou un tableau les bytes quand on les lit et de dépiler pour écrire ? en faisant fichier par fichier plutôt que d'utiliser les flux sans arrêt par alternance non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 String test = parametres.Parametres.DOSSIERPHOTO; File monRep = new File(test); File[]listePhoto = monRep.listFiles(); for (int i=0;i<listePhoto.length;i++) { try { FileInputStream monEntre = new FileInputStream(listePhoto[i]); FileOutputStream maSortie = new FileOutputStream(test+ "\\test\\"+listePhoto[i].getName()); while (true) { int b = monEntre.read(); if (b == -1) { break; } maSortie.write(b); } monEntre.close(); maSortie.close(); }
Désolé j'avais jamais vu java io avant mais là j'en ai besoin pour faire une appli pour un pote
Merci !
Partager