In Java gibt es eine einfache Möglichkeit, Folgendes zu veranschaulichen:
public static void MoveFolder (String OldPath, String NewPath) {// den Dateikopierforder (OldPath, NewPath) kopieren; // die Quelldatei löschen, um zu vermeiden, dass das Löschung verwirrt ist (neue Datei (OldPath)); } Dateien sollten nicht direkt geschnitten werden, um Fehler beim Schneiden zu verhindern, was zu Problemen der einen oder anderen Art führt.
Das Kopieren von Ordnern und allen Unterdateien und Unterordnern in Java wurde im Artikel "[Java] Dateieingabe- und Ausgabestreams verwendet, um den Betrieb des Kopierens aller Dateien in einem Ordner und einem anderen Ordner zu vervollständigen" (klicken Sie auf, um den Link zu öffnen).
Der Schlüssel besteht darin, Ordner, deren Unterdateien und Unterordner zu löschen.
In Java kann die Methode delete () der Dateiklasse nur leere Ordner oder einzelne Dateien löschen. Daher ist es erforderlich, den gesamten Ordner zu durchqueren, mit den Dateien im innersten Ordner zu beginnen und eine rekursive Löschung durchzuführen. Die spezifische Methode lautet wie folgt:
// Alle Unterverhandlungen und Dateien in einem Verzeichnis und Verzeichnis öffentlich statischer boolean deletedir (Datei dir) {// Wenn es sich um einen Ordner handelt, if (Dir.IsDirectory ()) {// Alle Dateien in diesem Ordner String [] chidess = reichen.list () lesen; // Löschen Sie die Unterverhandlungen im Verzeichnis für (int i = 0; i <children.length; i ++) {// Datei f = Neue Datei (String übergeordnet, Zeichenfolge untergeordnet) // Der Name des übergeordneten abstrakten Pfades wird zur Darstellung von Verzeichnissen verwendet, und die String von untergeordneter Pfadname wird verwendet, um Verzeichnisse oder Dateien darzustellen. // Der Dateipfad entspricht genau dem Dateipfad. boolean isdelete = deletedir (neue Datei (Dir, Kinder [i]); // Wenn Sie es löschen und es nichts zu löschen gibt, und isdelete == false, dann wird die Rekursion angezeigt, wenn (! Isdelete) {return false; }}} // Was Sie lesen, ist eine Datei oder ein leeres Verzeichnis. Sie können direkt return dir.delete () löschen; } Daher ist die gesamte Methode verbunden, verschieben Sie einen Ordner und alle Unterdateien und Unterordner unter der Festplatte C auf Scheibe F und benennen Sie ihn um:
import Java.io.*; public class cuttest {// Alle Unterverhandlungen und Dateien in einem Verzeichnis und Verzeichnis löschen public static boolean deletedir (Datei dir) {// Wenn es sich um einen Ordner handelt, if (Dir.IsDirectory ()) {// Alle Dateien in dieser Ordnerstring [] chidess = dirlist () lesen; // Löschen Sie die Unterverhandlungen im Verzeichnis für (int i = 0; i <children.length; i ++) {// Datei f = Neue Datei (String übergeordnet, Zeichenfolge untergeordnet) // Der Name des übergeordneten abstrakten Pfades wird zur Darstellung von Verzeichnissen verwendet, und die String von untergeordneter Pfadname wird verwendet, um Verzeichnisse oder Dateien darzustellen. // miteinander verbunden ist der Dateipfad boolean isdelete = deletedir (neue Datei (Dir, Kinder [i])); // Wenn Sie es löschen und es nichts zu löschen gibt, und isdelete == false, dann rekursiv aus dieser Zeit herausspringen, wenn (! Isdelete) {return false; }}} // Wenn Sie eine Datei oder ein leeres Verzeichnis lesen, können Sie direkt return dir.delete () löschen; } // Kopieren Sie alle Unterverzeichnisse und Dateien in einem bestimmten Verzeichnis und Verzeichnis in den neuen Ordner Public static void CopyFolder (String OldPath, String NewPath) {try {// Wenn der Ordner nicht existiert, erstellen Sie eine neue Ordner (new) Datei (newpath)). Mkdirs (); // Lesen Sie den Inhalt des gesamten Ordners in das Datei -Zeichenfolge -Array, setzen Sie einen Cursor I. unten und verschieben Sie ihn nach unten, um das Lesen der Array -Datei filelist = new Datei (OldPath) zu beginnen. String [] file = filelist.list (); // Beachten Sie, dass diese Temperatur nur ein temporärer Dateizeiger ist // Das gesamte Programm erstellt keine temporäre Dateidatei temp = null. Für (int i = 0; i <file.length; i ++) {// Wenn OldPath mit einem Pfadabscheider/oder//dann endet, ist der altePath/Dateiname in Ordnung // Andernfalls fügen Sie einen Pfadabschlüsseler nach OldPath hinzu und fügen Sie einen Dateinamen hinzu // Wer weiß, ob der Parameter, den Sie übergeben haben, f:/a oder f:/a/? if (oldPath.endswith (Datei.Sesparator)) {temp = neue Datei (OldPath + Datei [i]); } else {temp = neue Datei (OldPath + Datei.Sesparator + Datei [i]); } // Wenn der Cursor auf eine Datei auftritt, wenn (temp.isfile ()) {FileInputStream input = new FileInputStream (temp); // kopieren und umbename FileOutputStream Output = new FileOutputStream (newPath + "/" + "rename_" + (temp.getName ()). ToString ()); byte [] bufferArray = new Byte [1024 * 64]; int PrereadLength; while ((PrereadLength = input.read (bufferArray))! } output.flush (); output.close (); input.close (); } // Wenn der Cursor einen Ordner if (temp.isdirectory ()) {CopyFolder (OldPath + "/" + Datei [i], NewPath + "/" + Datei [i]) begegnet; }}} catch (Ausnahme e) {System.out.println ("Fehler beim Kopieren des gesamten Ordnungsinhalts"); }} public static void MoveFolder (String OldPath, String NewPath) {// Die Datei First CopyFolder (OldPath, NewPath) kopieren; // die Quelldatei löschen, um zu vermeiden, dass das Löschung verwirrt ist (neue Datei (OldPath)); } public static void main (String [] args) {MoveFolder ("c:/a", "f:/b"); }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.