1. Grundziele
Verwenden Sie Java, um die folgenden Vorgänge auszuführen:
Kopieren Sie alle Dateien in einem Ordner in einen anderen Ordner. Zum Beispiel gibt es zwei Ordner A und B in der Festplatte F:
Es gibt eine Reihe von Dateien in f:/a. Nach dem Ausführen des Java -Programms werden alle in f:/b kopiert und umbenannt. Fügen Sie das Präfix der Umbenennierung vor allen Dateien hinzu. Wenn sich ein Ordner enthält, wird der Ordner nicht umbenannt. Die in darin genannten Dateien werden umbenannt und das Präfix der Umbenennierung vor allen Dateien:
2. Produktionsprozess
1. Zunächst ist die Hauptfunktion sehr einfach, bei der die Funktionsweise der CopyFolder in der obigen Filetest -Klasse aufgerufen wird.
öffentliche Klasse Filecopy {public static void main (String args []) {new Filetest (). CopyFolder ("f:/a", "f:/b"); }}Es ist erwähnenswert, dass in Java, f:/a kein Problem hat und f:/a auch kein Problem ist, aber da/muss/müssen Sie beim Ausdrücken einer Zeichenfolge übertragen werden, müssen Sie sie als f: // a schreiben
2. Der Schlüssel zum gesamten Programm ist die Funktion des Exemplars in der Filetest -Klasse. Diese Funktion ist -_- in dieser Klasse! Bitte beachten Sie auch, dass Java.io.* zu Beginn des Programms vorgestellt wird. Da der Eingangs- und Ausgangsstrom verwendet wird
Klasse Filetest {public void CopyFolder (String OldPath, String NewPath) {try {// Wenn der Ordner nicht existiert, erstellen Sie einen neuen Ordner (neue Datei (NewPath)). Mkdirs (); // Lesen Sie den Inhalt des gesamten Ordners in das Datei -Zeichenfolge -Array, setzen Sie einen Cursor I. unten und bewegen Sie sich nach unten, um das Lesen der Array -Datei filelist = neue 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 endet/oder/dann ist OldPath/Dateiname in Ordnung // Andernfalls müssen Sie nach OldPath einen Pfadabscheider nach OldPath hinzufügen und einen Dateinamen hinzufügen // Wer weiß, ob die von Ihnen bestandenen Parameter 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); 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"); }}}Es kann ein bisschen schwierig sein zu verstehen, wenn der Cursor auf eine Datei trifft. Tatsächlich ist es so. Setzen Sie zunächst einen Dateieingabestream ein, geben Sie die Eingabe aus der vom Cursor aufgenommenen Datei an und geben Sie dann die Ausgabe in das Dateiverzeichnis von Newpath/umbename_old Dateinamen an. Setzen Sie danach ein Pufferarray. Für den Dateieingabestream wird für die Datei, die Sie lesen möchten, jedes Mal, wenn Sie die Lesemethode aufrufen, den Inhalt der Pufferarray -Länge des Pufferarray -Bufferarrays in der Position, die Sie lesen, weiterhin auf den Leseinhalten auf dem Pufferarray speichern, überschreiben Sie alle Inhalte vor dem Pufferarray, und dann wird der Dateiausgabe -Stream die gesamten Inhalte des Pufferarrays auf die Inhalt des Pufferarrays ausgeben.
Wenn der Dateieingabestream auf diese Weise in Ordnung sein kann, wird weiterhin nach dem Speicherort, an dem die letzte Lektüre stattfindet, weiter vorlesen. Wenn die Datei gelesen wird, ruft die Java -eingekapselte FileInputStream.read -Methode auch die Betriebssystem -API auf, um diese Daten nacheinander zu lesen. Beim Lesen von Dateidaten muss sie sequentiell sein. Es ist unmöglich, zuerst das erste Byte und dann das zweite zuletztes Byte zu lesen. Beim Lesen der Schleife liest die Lesemethode die Position ++, sodass jede Lese die folgenden Bytes nacheinander gelesen wird, bis das Ende der Datei auftritt.
Wenn der Cursor auf einen Ordner trifft, rufen Sie ihn einfach erneut an, um dieselbe Operation abzuschließen. Dies nennt man Iteration.
3. Daher ist das gesamte Verfahren wie folgt:
import Java.io.*; / **** @param OldPath Das zu kopierende Verzeichnis* @param newpath Das zu kopierte Verzeichnis**/ class Filetest {public void CopyFolder (String OldPath, String NewPath) {try {// Wenn der Ordner nicht vorhanden ist, erstellen Sie einen neuen Ordner (New Datei). Mkdirs (); // Lesen Sie den Inhalt des gesamten Ordners im Datei -Zeichenfolge -Array, setzen Sie einen Cursor I. unten und verschieben Sie ihn ständig nach unten, um diese 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 endet/oder/dann ist OldPath/Dateiname in Ordnung // Andernfalls müssen Sie nach OldPath einen Pfadabscheider nach OldPath hinzufügen und einen Dateinamen hinzufügen // Wer weiß, ob die von Ihnen bestandenen Parameter 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); 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"); }}} öffentliche Klasse Filecopy {public static void main (String args []) {new Filetest (). CopyFolder ("f:/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.