En Java, hay una manera simple de ilustrar lo siguiente:
public static void MoveFolder (String OldPath, String NewPath) {// Copiar el archivo CopyFolder (OldPath, NewPath); // eliminar el archivo fuente para evitar confundir Deletedir (nuevo archivo (OldPath)); } Los archivos no deben cortarse directamente para evitar errores durante el corte, lo que resulta en problemas de un tipo u otro.
Copiar carpetas y todos los subfiles y subcarpetas en Java se ha explicado en detalle en el artículo "[Java] usa transmisiones de entrada y salida para completar el funcionamiento de copiar todos los archivos en una carpeta y otra carpeta" (haga clic para abrir el enlace).
La clave es eliminar carpetas, sus subfiles y subcarpetas.
En Java, el método Delete () de la clase de archivo solo puede eliminar carpetas vacías o archivos únicos. Por lo tanto, es necesario atravesar toda la carpeta, comenzar con los archivos en la carpeta más interna y realizar una eliminación recursiva. El método específico es el siguiente:
// Elimine todos los subdirectorios y archivos en un directorio y directorio public static static boolean deletedir (archivo dir) {// Si es una carpeta if (dir.isdirectory ()) {// lee todos los archivos en esa carpeta [] children = dir.list (); // Elimine recursivamente los subdirectorios en el directorio para (int i = 0; i <children.length; i ++) {// archivo f = nuevo archivo (string parent, string child) // El nombre de ruta abstracta principal se usa para representar directorios, y la cadena de nombre de la ruta infantil se usa para representar directorios o archivos. // La ruta del archivo es exactamente la misma que la ruta del archivo. boolean isdelete = deletedir (nuevo archivo (dir, niños [i])); // Si lo elimina y no hay nada que lo elimine, e isDelete == false, entonces la recursión aparecerá si (! ISDelete) {return false; }}} // Lo que lee es un archivo o un directorio vacío, puede eliminar directamente return dir.delete (); } Por lo tanto, así es como está conectado todo el método, mueva la carpeta A y todos los subfiles y subcarpetas en el disco C al disco F, y cambie el nombre:
import java.io.*; Public Class Cuttest {// Elimine todos los subdirectorios y archivos en un directorio y directorio public static static boolean deletedir (archivo dir) {// Si es una carpeta if (dir.isdirectory ()) {// lea todos los archivos en esa carpeta [] children = dir.list (); // Elimine recursivamente los subdirectorios en el directorio para (int i = 0; i <children.length; i ++) {// archivo f = nuevo archivo (string parent, string child) // El nombre de ruta abstracta principal se usa para representar directorios, y la cadena de nombre de la ruta infantil se usa para representar directorios o archivos. // conectados juntos está la ruta del archivo boolean isdelete = deletedir (nuevo archivo (dir, niños [i])); // Si lo elimina y no hay nada que lo elimine, e isDelete == falso, luego salta de este tiempo si (! ISDelete) {return false; }}} // Si lee un archivo o un directorio vacío, puede eliminar directamente return dir.delete (); } // Copiar todos los subdirectorios y archivos en un directorio y directorio determinado a la nueva carpeta public static void Copyfeder (String OldPath, String NewPath) {try {// Si la carpeta no existe, cree un nuevo archivo de carpeta (nuevo) (newpath))). Mkdirs (); // Lea el contenido de toda la carpeta en la matriz de cadenas de archivo, establezca un cursor I a continuación y muévalo hacia abajo para comenzar a leer el archivo de matriz fileList = nuevo archivo (OldPath); Cadena [] file = fileList.list (); // Tenga en cuenta que esta temperatura es solo un puntero de archivo temporal // todo el programa no crea un archivo temporal de archivo temp = null; for (int i = 0; i <file.length; i ++) {// Si OldPath termina con un separador de ruta/o/, entonces OldPath/File Name está bien // de lo contrario, agregue un separador de ruta después de OldPath y agregue un nombre de archivo // quién sabe si el parámetro que pasa es f:/a o f:/a/? if (oldPath.endswith (file.separator)) {temp = new File (OldPath + File [i]); } else {Temp = nuevo archivo (OldPath + File.separator + File [i]); } // Si el cursor encuentra un archivo if (temp.isfile ()) {fileInputStream input = new FileInputStream (TEMP); // Copiar y cambiar el nombre de FileOutputStream Output = New FileOutputStream (NewPath + "/" + "rename_" + (temp.getName ()). ToString ()); byte [] bufferArray = nuevo byte [1024 * 64]; int prereadlength; while ((prereadLength = input.read (bufferArray))! = -1) {output.write (bufferArray, 0, prereadLength); } output.flush (); output.close (); input.close (); } // Si el cursor encuentra una carpeta if (temp.isDirectory ()) {CopyFolder (OldPath + "/" + archivo [i], newpath + "/" + archivo [i]); }}} Catch (Exception e) {System.out.println ("Error al copiar el contenido completo de la carpeta"); }} public static void MoveFolder (String OldPath, String NewPath) {// Copiar el archivo First CopyFolder (OldPath, NewPath); // eliminar el archivo fuente para evitar confundir Deletedir (nuevo archivo (OldPath)); } public static void main (string [] args) {MoveFolder ("c:/a", "f:/b"); }}Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.