Peut-on copier un répertoire entier ? - Java - Programmation
Marsh Posté le 06-01-2004 à 21:45:00
ben quoi.. on peux le faire
Marsh Posté le 06-01-2004 à 21:47:33
ReplyMarsh Posté le 06-01-2004 à 22:32:36
Je comprends pas bien, on peut ou on peut pas ?
C'est peut-être possible mais compliqué ... ???
Marsh Posté le 06-01-2004 à 22:46:49
peon3 a écrit : Je comprends pas bien, on peut ou on peut pas ? |
Il n'y a déjà pas de méthode dans l'API pour copier un fichier, alors un répertoire
pour copier rep1 vers rep2 Tu dois:
# mkdir de rep2 (File destDir = new File(rep2); destDir.mkdirs(); )
# Choper la liste des fichiers (rep1.listFiles() )
# Pour chaque fichier (attention un File peut etre un fichier ou un répertoire voir les méthodes isFile() et isDirectory()), lire le contenu et l'écrire dans le rép destination
Marsh Posté le 07-01-2004 à 08:25:12
le principe est pas dur, maintenant si ta jamais touché à l'acces fichier en java faudra lire un peu la doc stou
Marsh Posté le 07-01-2004 à 09:46:49
Y a pas longtemps dans un post java j'ai filé le code pour faire une copie de fichier ... je sais plus trop quel post mais ca doit se retrouver ...
après avec une petite fonction recursive, ca se fait très vite.
Marsh Posté le 07-01-2004 à 10:36:00
En effet, j'ai retrouvé le post pour copier un fichier --> Merci.
Sinon, j'ai entendu parler de "star" ou "webstar" qui parmettait de faire ce genre de choses, si qq'un connaît ....
Marsh Posté le 07-01-2004 à 10:38:04
Non ... mais c'est telement facile que vraiment, tu peux coder toi même, hein !
Marsh Posté le 07-01-2004 à 11:30:38
allez, c'est cado !
Code :
|
Marsh Posté le 07-01-2004 à 11:31:10
peon3 a écrit : En effet, j'ai retrouvé le post pour copier un fichier --> Merci. |
ouais, sauf qu'il était buggué mon code
Marsh Posté le 07-01-2004 à 14:01:53
Ouah, merci beaucoup, je vais essayer ça dans la journée.
Merci à tous pour votre participation !!!
Marsh Posté le 07-01-2004 à 17:03:28
Ca marche nickel.
Juste une petite remarque, lorsque l'on veut copier un fichier vide, on entre dans une boucle infinie, j'ai modifier de cette façon :
----------------------------------------------------------------
public static void copyFile(final File from, final File to) throws IOException {
final InputStream inStream = new FileInputStream(from);
final OutputStream outStream = new FileOutputStream(to);
if (from.length() > 0){
copy(inStream, outStream, (int) Math.min(from.length(), 4*1024));
}
inStream.close();
outStream.close();
}
----------------------------------------------------------------
Une autre remarque, lorsqu'un fichier de destination existe déjà et qu'il est en "lecture seule", ça ne fonctionne pas.
Dans mon cas, j'ai fait un "delete" du fichier du répertoire de destination puis une copie à partir de la source.
Maintenant j'ai un prog qui marche comme je le voulais.
Merci à tous !!!
,
Marsh Posté le 07-01-2004 à 19:01:00
peon3 a écrit : Ca marche nickel. |
Ha oui tiens
j'avais pas pensé à ce cas là ...
peon3 a écrit : |
ouais, j'ai pas traité ce genre de cas là.
Y a d'autres cas :
Marsh Posté le 07-01-2004 à 19:06:49
benou ton code il copie pas les sous dirs, là nan
Marsh Posté le 07-01-2004 à 19:07:37
et c'est quoi le but de tous ces final à part fait warrior?
Marsh Posté le 07-01-2004 à 19:16:31
the real moins moins a écrit : et c'est quoi le but de tous ces final à part fait warrior? |
et c'est quoi le but de ta question à part fait warrior?
Marsh Posté le 07-01-2004 à 19:17:07
EpoK a écrit : |
savoir pourquoi benou avait foutu des final partout, va te faire foutre s'il te plait
Marsh Posté le 07-01-2004 à 19:18:12
the real moins moins a écrit : savoir pourquoi benou avait foutu des final partout, va te faire foutre s'il te plait |
mais de meme cher ami
Marsh Posté le 07-01-2004 à 19:19:10
et je vois pas bien ou est la boucle pour les fichiers vide
Marsh Posté le 07-01-2004 à 19:42:20
the real moins moins a écrit : et je vois pas bien ou est la boucle pour les fichiers vide |
taille de buffer à 0
Marsh Posté le 07-01-2004 à 19:42:47
the real moins moins a écrit : benou ton code il copie pas les sous dirs, là nan |
ben si.. c'est récursif
Marsh Posté le 07-01-2004 à 19:43:54
the real moins moins a écrit : et c'est quoi le but de tous ces final à part fait warrior? |
nan, c'est bien pour faire warrior
en fait, je me demande si dans la pratique ca a une utilité réelle
Marsh Posté le 07-01-2004 à 20:19:03
Si si, ce code sert à qq chose :
Ca me sert à faire un programme d'update.
En effet, j'ai besoin de faire un petit programme qui me permet de mettre à jour une version antérieure à mon programme principal, et il est hors de question que j'en achète un ou même en prendre un gratuit car je veux être sûr de ce que le programme fait.
Marsh Posté le 07-01-2004 à 20:23:03
peon3 a écrit : |
on parlait du mot clef "final"
Marsh Posté le 07-01-2004 à 20:30:53
Oupssss.....
C'est le dernier post avant le mien qui m'a induit en erreur.
désolé
Marsh Posté le 07-01-2004 à 23:13:03
benou a écrit : |
ha oui ça y est j'ai vu !
faut dire que tes methodes sont dans un ordre bizarre et qu'elles ont toutes le meme nom, pas évident pour s'y retrouver
(et qu'a mon avis on aurait pu se passer de certaines d'entres elles, ou les mettre en private )
Marsh Posté le 07-01-2004 à 23:26:52
the real moins moins a écrit : ha oui ça y est j'ai vu ! |
bha non, pkoi les mettres en private ? c'est une classe utilitaire et toutes ces méthodes ont une utilitée
Marsh Posté le 08-01-2004 à 01:10:30
le copyDirectory n'est d'aucune utilité en public, doublon avec copy(File, File)
Marsh Posté le 08-01-2004 à 02:29:29
the real moins moins a écrit : le copyDirectory n'est d'aucune utilité en public, doublon avec copy(File, File) |
mais ils font pas la même chose ...
copy(File, File) ca peux prendre en paramêtre des fichier ou des répertoire (des File quoi). Alors que copyDirectory ne doit prendre que des repertoires.
Marsh Posté le 08-01-2004 à 09:45:58
benou a écrit : |
ben sauf que copyDirectory ne verifie pas qu'on lui passe effectivement des repertoire, et que copy par contre, delegue simplement à copyDirectory si on lui passe un repertoire, d'ou l'inutilité de la public-ité de copyDirectory
Marsh Posté le 08-01-2004 à 10:09:20
the real moins moins a écrit : ben sauf que copyDirectory ne verifie pas qu'on lui passe effectivement des repertoire, et que copy par contre, delegue simplement à copyDirectory si on lui passe un repertoire, d'ou l'inutilité de la public-ité de copyDirectory |
et ben mets le en private si ca te fait plaisir ...
moi si j'ai copyFile, je préfère avoir à côté copyDirectory, je trouve ca plus clair ...
Marsh Posté le 08-01-2004 à 10:12:01
t'es pas obligé de le prendre pour toi, c'était une tentative de remarque constructive. si tu veux rien entendre, m'en fous, j't'ai pas attendu pour savoir copier un répertoire en java
Marsh Posté le 08-01-2004 à 10:12:34
(en fait jmettrais copyFile en private aussi pour la meme raison tiens)
Marsh Posté le 08-01-2004 à 10:20:15
the real moins moins a écrit : (en fait jmettrais copyFile en private aussi pour la meme raison tiens) |
Marsh Posté le 06-01-2004 à 21:20:18
Salut à tous,
J'aurais voulu savoir si il existait en JAVA une méthode qui permet de copier un répertoire entier (avec des fichiers et des sous-répertoires) ?
Merci