Bonjour
j'aimerai savoir comment on fait pour déplacer un dossier (qui contient déja des sous dossiers) vers un autre endroit en java
merci de votre aide
Bonjour
j'aimerai savoir comment on fait pour déplacer un dossier (qui contient déja des sous dossiers) vers un autre endroit en java
merci de votre aide
Bonjour,
En effet, je ne crois pas qu'il existe de méthode magique du genre copy(source, destination) dans l'ensemble des classes java standard qui permettent d'accéder au système de fichier. Que ce soit par l'objet File, ou par JFileChooser, le déplacement n'existe pas. Il faut copier la source vers sa nouvelle destination, puis supprimer la source après évidement s'être assuré d'avoir tout copié. De plus, il sera de la charge de votre code d'introspecter le contenu du dossier à déplacer pour réaliser la construction identique de l'arborescence qu'il pourrait contenir avant de copier aux bons endroits fichiers par fichiers...
Dans ce cas, je penses que si vous prenez soin d'examiner le type de platteforme système hôte, rien ne vous empêche par le biais de Runtime.getRuntime().exec("ligne de commande") de réaliser ce genre d'opération. Sous windows, il vous suffira de faire un move cheminsource chemindestination. Sinon, il faut coder...
Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !
Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
Tout sur les réseaux : https://reseau.developpez.com/cours/
Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
Tout sur le matériel : https://hardware.developpez.com/cours/
Si, il existe bien une méthode pour déplacer un répertoire, c'est renameTo :
Attention cependant cette méthode ne marche que si on reste sur la même partition. Pour déplacer d'une partition sur l'autre, il faut faire une copie complète récursive du répertoire (comme le fait l'OS).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 File origine = new File( "C:\\repertoire_depart" ); File destination = new File("C:\\repertoire_arrivee"); if(origine.renameTo( destination )) System.out.println("OK"); else System.out.println("Erreur");
Merci, je ne connaissais pas renameTo. Mais c'est éffectivement dommage de ne pas pouvoir avoir une cible et une source sur différents systèmes de fichiers. Dans ce cas, ne serait-il pas interressant d'utiliser le format jar pour créer un fichier qui contiendrait tout le dossier source, puis déployer le jar obtenu sur une autre partition et enfin, après avoir vérifié supprimé le dossier source ?
Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !
Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
Tout sur les réseaux : https://reseau.developpez.com/cours/
Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
Tout sur le matériel : https://hardware.developpez.com/cours/
Je pense qu'on perdrait du temps. En effet il faudrait déployer le jar, donc créer les fichiers comme si on les avait copiés directement. De plus si le répertoire source est très volumineux la création du jar sera coûteuse. Enfin, il faudrait disposer d'un espace disponible équivalent à la taille du répertoire pour stocker le jar temporairement, ce qui n'est pas nécessaire si on copie directement.
Le jar est intéressant pour transférer entre 2 machines par exemple, mais sur la même machine le facteur limitant est la vitesse des disques, pas le transfert.
Bonjour,
sinon il existe des bibliothèques spécifiques aux I/O comme "Commons IO" de la fondation Apache.
Bien le bonjour chez vous
Jowo
Je n'avais pas pensé à cela, c'est vrai que pour des gros volumes, ce n'est pas envisageable. Quoi qu'il en soit, pour ma part je vais en resté là. En effet, je crois que vous avez fort bien répondu à la question initiale Vic, et poursuivre cette discussion somme toute interessante ici serait à mon sens déplacé.
Et je ne vais pas me priver de jeter un oeil à cette API COMMON IO de Apache...
Bonne journée à vous tous.
Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !
Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
Tout sur les réseaux : https://reseau.developpez.com/cours/
Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
Tout sur le matériel : https://hardware.developpez.com/cours/
j'ai essayé le "renameto" pour déplacer un repertoire (qui contients déja des sous répértoires et des fichiers) vers un autre emplacement ça me léve une exception, en faite faut qu'ils aient le méme repertoire parent pour que ça marche,
en ce qui concerne cette api que vous avez proposé je vais la voir
ps: je dois déplacer 340mo a cause de la quantité enorme des docuement pdf que j'ai
Je suis pas spécialement fan de ces méthodes agnostiques de la plateforme.
Selon l'OS, le disque, la partition, la position de la lune l'opération peut réussir ou non.
Donc ce qui fonctionne dans un test u et dans une application en local peut échouer sur la machine d'exploitation.
Perso, je préfère utiliser un script (sh/bat) de déplacement, le valider en local puis sur la machine cible.
Par ailleurs, si l'opération de déplacement a échoué, ca peut être pratique d'avoir un moyen simple de relancer l'opération hors applicatif.
Ils flottent tous en bas
un sh?
c'est à dire un script de commande linux?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager