Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3002 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Peut-on copier un répertoire entier ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Peut-on copier un répertoire entier ?

n°604246
peon3
Posté le 06-01-2004 à 21:20:18  profilanswer
 


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

mood
Publicité
Posté le 06-01-2004 à 21:20:18  profilanswer
 

n°604263
Mr yvele
yvele n'est plus.
Posté le 06-01-2004 à 21:39:03  profilanswer
 

oui


---------------
yvele n'est plus.
n°604270
darklord
You're welcome
Posté le 06-01-2004 à 21:44:40  profilanswer
 
n°604271
Mr yvele
yvele n'est plus.
Posté le 06-01-2004 à 21:45:00  profilanswer
 

ben quoi.. on peux le faire [:sinclaire]


---------------
yvele n'est plus.
n°604274
darklord
You're welcome
Posté le 06-01-2004 à 21:47:33  profilanswer
 

Mr yvele a écrit :

ben quoi.. on peux le faire [:sinclaire]


 
ne te fais pas plus con que tu n'es, veux tu? :o

n°604313
peon3
Posté le 06-01-2004 à 22:32:36  profilanswer
 

Je comprends pas bien, on peut ou on peut pas ?
C'est peut-être possible mais compliqué ... ???

n°604322
darklord
You're welcome
Posté le 06-01-2004 à 22:46:49  profilanswer
 

peon3 a écrit :

Je comprends pas bien, on peut ou on peut pas ?
C'est peut-être possible mais compliqué ... ???


 
Il n'y a déjà pas de méthode dans l'API pour copier un fichier, alors un répertoire :D
 
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
 

n°604427
peon3
Posté le 07-01-2004 à 07:17:09  profilanswer
 

Ok, merci, je vais essayer tout ça ...

n°604436
EpoK
Let's burn
Posté le 07-01-2004 à 08:25:12  profilanswer
 

le principe est pas dur, maintenant si ta jamais touché à l'acces fichier en java faudra lire un peu la doc stou :)

n°604479
benou
Posté le 07-01-2004 à 09:46:49  profilanswer
 

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.

mood
Publicité
Posté le 07-01-2004 à 09:46:49  profilanswer
 

n°604506
peon3
Posté le 07-01-2004 à 10:36:00  profilanswer
 

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 ....

n°604508
benou
Posté le 07-01-2004 à 10:38:04  profilanswer
 

Non ... mais c'est telement facile que vraiment, tu peux coder toi même, hein !


---------------
ma vie, mon oeuvre - HomePlayer
n°604582
benou
Posté le 07-01-2004 à 11:30:38  profilanswer
 

allez, c'est cado !
 

Code :
  1. package utils;
  2. import java.io.*;
  3. public class FileUtils {
  4.  
  5. public static void copy(final InputStream inStream, final OutputStream outStream, final int bufferSize) throws IOException {
  6.  final byte[] buffer = new byte[bufferSize];
  7.  int nbRead;
  8.  while ((nbRead = inStream.read(buffer)) != -1) {
  9.   outStream.write(buffer, 0, nbRead);
  10.  }
  11. }
  12.    
  13. public static void copyDirectory(final File from, final File to) throws IOException {
  14.  if (! to.exists()) {
  15.   to.mkdir();
  16.  }
  17.  final File[] inDir = from.listFiles();
  18.  for (int i = 0; i < inDir.length; i++) {
  19.   final File file = inDir[i];
  20.   copy(file, new File(to, file.getName()));
  21.  }
  22. }
  23. public static void copyFile(final File from, final File to) throws IOException {
  24.  final InputStream inStream = new FileInputStream(from);
  25.  final OutputStream outStream = new FileOutputStream(to);
  26.  copy(inStream, outStream, (int) Math.min(from.length(), 4*1024));
  27.  inStream.close();
  28.  outStream.close();
  29. }
  30. public static void copy(final File from, final File to) throws IOException {
  31.  if (from.isFile()) {
  32.   copyFile(from, to);
  33.  } else if (from.isDirectory()){
  34.   copyDirectory(from, to);
  35.  } else {
  36.   throw new FileNotFoundException(from.toString() + " does not exist" );
  37.  }
  38. }


---------------
ma vie, mon oeuvre - HomePlayer
n°604584
benou
Posté le 07-01-2004 à 11:31:10  profilanswer
 

peon3 a écrit :

En effet, j'ai retrouvé le post pour copier un fichier --> Merci.


ouais, sauf qu'il était buggué mon code  :whistle:


---------------
ma vie, mon oeuvre - HomePlayer
n°604735
peon3
Posté le 07-01-2004 à 14:01:53  profilanswer
 

Ouah, merci beaucoup, je vais essayer ça dans la journée.
 
Merci à tous pour votre participation !!!

n°604901
peon3
Posté le 07-01-2004 à 17:03:28  profilanswer
 

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 !!!
 :p ,  :sol:  

n°605020
benou
Posté le 07-01-2004 à 19:01:00  profilanswer
 

peon3 a écrit :

Ca marche nickel.
Juste une petite remarque, lorsque l'on veut copier un fichier vide, on entre dans une boucle infinie


Ha oui tiens  :whistle:  
j'avais pas pensé à ce cas là ...
 

peon3 a écrit :


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.


ouais, j'ai pas traité ce genre de cas là.
Y a d'autres cas :  

  • le cas où dans le répertoire de destination, y a un répertoire du même nom qu'un fichier du répertoire source.
  • les cas de droits droits d'accès (ton exemple est un de ces cas)
  • le cas où le répertoire de destination n'existe pas
  • peut être d'autres trucs auxquels j'ai pas pensé. J'ai codé ca vite...


---------------
ma vie, mon oeuvre - HomePlayer
n°605035
the real m​oins moins
Posté le 07-01-2004 à 19:06:49  profilanswer
 

benou ton code il copie pas les sous dirs, là nan


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°605038
the real m​oins moins
Posté le 07-01-2004 à 19:07:37  profilanswer
 

et c'est quoi le but de tous ces final à part fait warrior?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°605046
EpoK
Let's burn
Posté le 07-01-2004 à 19:16:31  profilanswer
 

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?


Message édité par EpoK le 07-01-2004 à 19:17:50
n°605049
the real m​oins moins
Posté le 07-01-2004 à 19:17:07  profilanswer
 

EpoK a écrit :


 
et c'est quoi le but de ta question à part fait warrior?
 

savoir pourquoi benou avait foutu des final partout, va te faire foutre s'il te plait :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°605053
EpoK
Let's burn
Posté le 07-01-2004 à 19:18:12  profilanswer
 

the real moins moins a écrit :

savoir pourquoi benou avait foutu des final partout, va te faire foutre s'il te plait :)


 
 :lol:  
 
 
mais de meme cher ami

n°605056
the real m​oins moins
Posté le 07-01-2004 à 19:19:10  profilanswer
 

et je vois pas bien ou est la boucle pour les fichiers vide :??:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°605087
benou
Posté le 07-01-2004 à 19:42:20  profilanswer
 

the real moins moins a écrit :

et je vois pas bien ou est la boucle pour les fichiers vide :??:


taille de buffer à 0 ;)


---------------
ma vie, mon oeuvre - HomePlayer
n°605089
benou
Posté le 07-01-2004 à 19:42:47  profilanswer
 

the real moins moins a écrit :

benou ton code il copie pas les sous dirs, là nan


ben si.. c'est récursif [:skeye]


---------------
ma vie, mon oeuvre - HomePlayer
n°605091
benou
Posté le 07-01-2004 à 19:43:54  profilanswer
 

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  :??:


---------------
ma vie, mon oeuvre - HomePlayer
n°605120
peon3
Posté le 07-01-2004 à 20:19:03  profilanswer
 


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.
 

n°605122
benou
Posté le 07-01-2004 à 20:23:03  profilanswer
 

peon3 a écrit :


Si si, ce code sert à qq chose :


on parlait du mot clef "final" :)


---------------
ma vie, mon oeuvre - HomePlayer
n°605130
peon3
Posté le 07-01-2004 à 20:30:53  profilanswer
 

Oupssss.....  :sweat:  
C'est le dernier post avant le mien qui m'a induit en erreur.
 
désolé  :jap:

n°605157
darklord
You're welcome
Posté le 07-01-2004 à 20:46:27  profilanswer
 

benou a écrit :


ben si.. c'est récursif [:skeye]


 
....
non rien  
[:neowen]

n°605250
the real m​oins moins
Posté le 07-01-2004 à 23:13:03  profilanswer
 

benou a écrit :


ben si.. c'est récursif [:skeye]

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 :o)

n°605264
benou
Posté le 07-01-2004 à 23:26:52  profilanswer
 

the real moins moins 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 :o)


bha non, pkoi les mettres en private ? c'est une classe utilitaire et toutes ces méthodes ont une utilitée [:spamafote]

n°605298
the real m​oins moins
Posté le 08-01-2004 à 01:10:30  profilanswer
 

le copyDirectory n'est d'aucune utilité en public, doublon avec copy(File, File)


Message édité par the real moins moins le 08-01-2004 à 01:11:07
n°605318
benou
Posté le 08-01-2004 à 02:29:29  profilanswer
 

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.

n°605384
the real m​oins moins
Posté le 08-01-2004 à 09:45:58  profilanswer
 

benou a écrit :


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.

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 [:spamafote]

n°605399
benou
Posté le 08-01-2004 à 10:09:20  profilanswer
 

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 [:spamafote]


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 ...


---------------
ma vie, mon oeuvre - HomePlayer
n°605400
the real m​oins moins
Posté le 08-01-2004 à 10:12:01  profilanswer
 

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 [:boidleau]

n°605401
the real m​oins moins
Posté le 08-01-2004 à 10:12:34  profilanswer
 

(en fait jmettrais copyFile en private aussi pour la meme raison tiens)

n°605410
benou
Posté le 08-01-2004 à 10:20:15  profilanswer
 

the real moins moins a écrit :

(en fait jmettrais copyFile en private aussi pour la meme raison tiens)


 :pfff:


---------------
ma vie, mon oeuvre - HomePlayer
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Peut-on copier un répertoire entier ?

 

Sujets relatifs
copierRépertoire courant de l'application [résolu]
[PHP] Copier une image d'un site sur son disque dur ?Choix d'un répertoire avec JFileChooser [resolu]
[delphi/QuickRep] Copier,déplacerbloquer acces page par mot de passe+empecher copier/print
[ECLIPSE] Copier/coller avec la souris ?[Langage C] Existe t il une fonction de conversion entier->caractère??
Connaitre l'état des boutons de la souris sur l'écran entier[C++]Comment connaitre le répertoire d'installation de windows
Plus de sujets relatifs à : Peut-on copier un répertoire entier ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR