En Java, il existe un moyen simple d'illustrer ce qui suit:
public static void MoveFolder (String OldPath, String newPath) {// Copiez le fichier copyfolder (oldpath, newpath); // Supprimer le fichier source pour éviter de confondre DeleteDir (nouveau fichier (OldPath)); } Les fichiers ne doivent pas être réduits directement pour éviter les erreurs pendant la coupe, entraînant des problèmes d'un type ou d'une autre.
La copie des dossiers et de tous les sous-fichiers et sous-dossiers de Java a été expliquée en détail dans l'article "[Java] utilise des flux d'entrée et de sortie de fichiers pour terminer le fonctionnement de la copie de tous les fichiers dans un dossier et un autre dossier" (cliquez pour ouvrir le lien).
La clé est de supprimer les dossiers, leurs sous-fichiers et sous-dossiers.
Dans Java, la méthode delete () de la classe de fichiers ne peut supprimer que des dossiers vides ou des fichiers uniques. Par conséquent, il est nécessaire de traverser l'ensemble du dossier, de commencer par les fichiers dans le dossier le plus intérieur et d'effectuer une suppression récursive. La méthode spécifique est la suivante:
// Supprimer tous les sous-répertoires et fichiers dans un répertoire et répertoire public static boolean deleteDir (fichier dir) {// si c'est un dossier if (dir.isdirectory ()) {// lire tous les fichiers dans ce dossier String [] enfants = dir.list (); // Supprimer récursivement les sous-répertoires dans le répertoire pour (int i = 0; i <enfants.length; i ++) {// file f = nouveau fichier (chaîne parent, String Child) // Le nom de chemin abstrait du parent est utilisé pour représenter les répertoires, et le nom du chemin enfant est utilisé pour représenter des répertoires ou des fichiers. // Le chemin du fichier est exactement le même que le chemin du fichier. booléen isdelete = deletedir (nouveau fichier (dir, enfants [i])); // Si vous le supprimez et qu'il n'y a rien pour le supprimer, et isdelete == false, alors la récursivité apparaîtra si (! Isdelete) {return false; }}} // Ce que vous lisez est un fichier ou un répertoire vide, vous pouvez directement supprimer return dir.delete (); } Par conséquent, c'est ainsi que toute la méthode est connectée, déplacez le dossier A et tous les sous-fichiers et sous-dossiers sous disque C au disque f et le renommer:
importer java.io. *; classe publique CutTest {// Supprimer toutes les sous-répertoires et fichiers dans un répertoire et répertoire public static boolean DeleteDir (fichier dir) {// si c'est un dossier if (dir.isdirectory ()) {// lire tous les fichiers dans ce dossier string [] enfants = dir.list (); // Supprimer récursivement les sous-répertoires dans le répertoire pour (int i = 0; i <enfants.length; i ++) {// file f = nouveau fichier (chaîne parent, String Child) // Le nom de chemin abstrait du parent est utilisé pour représenter les répertoires, et le nom du chemin enfant est utilisé pour représenter des répertoires ou des fichiers. // connecté ensemble est le chemin de fichier booléen isdelete = deletedir (nouveau fichier (dir, enfants [i])); // Si vous le supprimez et qu'il n'y a rien pour le supprimer, et isdelete == false, alors sautez récursivement de cette fois si (! Isdelete) {return false; }}} // Si vous lisez un fichier ou un répertoire vide, vous pouvez supprimer directement return dir.delete (); } // Copiez toutes les sous-répertoires et fichiers dans un certain répertoire et répertoire dans le nouveau dossier public static void copyfolder (String oldpath, string newPath) {try {// Si le dossier n'existe pas, créez un nouveau dossier (nouveau) fichier (newPath)). MKDIRS (); // Lisez le contenu de l'ensemble du dossier dans le tableau de chaîne de fichiers, définissez un curseur I ci-dessous et déplacez-le vers le bas pour commencer à lire le fichier de tableau FileList = nouveau fichier (oldpath); String [] file = fileList.list (); // Notez que cette température n'est qu'un pointeur de fichiers temporaire // L'ensemble du programme ne crée pas de fichier temporaire Temp = null; pour (int i = 0; i <file.length; i ++) {// Si OldPath se termine par un séparateur de chemin / ou /, alors le nom de fichier OLDPATH // sinon, ajoutez un séparateur de chemin après OldPath et ajoutez un nom de fichier // Qui sait si le paramètre que vous avez réussi est f: / a ou f: / a /? if (oldpath.endswith (file.separator)) {temp = new file (oldpath + file [i]); } else {temp = new File (oldpath + file.separator + file [i]); } // Si le curseur rencontre un fichier if (temp.isfile ()) {fileInputStream input = new FileInputStream (temp); // Copie et renommer FileOutputStream output = new FileOutputStream (newPath + "/" + "rename_" + (temp.getName ()). ToString ()); octet [] bufferArray = nouveau octet [1024 * 64]; int prereadLength; while ((prereadLength = input.read (bufferArray))! = -1) {output.write (bufferArray, 0, prereadLength); } output.flush (); output.close (); input.close (); } // Si le curseur rencontre un dossier if (temp.isdirectory ()) {copyfolder (oldpath + "/" + file [i], newPath + "/" + file [i]); }}} catch (exception e) {System.out.println ("Erreur dans la copie du contenu du dossier entier"); }} public static void movefolder (String oldpath, string newpath) {// copy le fichier First CopyFolder (oldpath, newPath); // Supprimer le fichier source pour éviter de confondre DeleteDir (nouveau fichier (OldPath)); } public static void main (String [] args) {movefolder ("c: / a", "f: / b"); }}Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.