1. Основные цели
Используйте Java, чтобы завершить следующие операции:
Скопируйте все файлы в одной папке в другую папку, например, есть две папки A и B на диске F:
Есть куча файлов в F:/a. После запуска программы Java все они будут скопированы в F:/B и переименованы в переименование. Добавьте префикс rename_ перед всеми файлами. Если внутри есть папка, папка не будет переименована. Файлы внутри будут переименованы, и префикс rename_ перед всеми файлами:
2. Процесс производства
1. Во -первых, основная функция очень проста, которая заключается в том, чтобы вызвать функцию копирования в приведенном выше классе Filetest.
открытый класс filecopy {public static void main (string args []) {new filetest (). CopyFolder ("f:/a", "f:/b"); }}Стоит отметить, что в Java F:/A не имеет никаких проблем, и F:/A также не является проблемой, но, поскольку/должно быть передано при выражении строки, вы должны написать ее как f: // a
2. Ключом к всей программе является функция копирования Doffolder в классе Filetest. Эта функция -_- в этом классе! Также обратите внимание, что java.io.* представлен в начале программы; Поскольку используется поток ввода и вывода
класс filetest {public void copyFolder (String oldPath, String newpath) {try {// Если папка не существует, создайте новую папку (новый файл (newpath)). mkdirs (); // Прочитайте содержимое всей папки в массив строковых файлов, установите курсор I ниже и перейдите вниз, чтобы начать читать файл массива FileList = новый файл (OldPath); String [] file = fileList.list (); // Обратите внимание, что эта температура является просто временным указателем файла // Вся программа не создает временного файла файла temp = null; для (int i = 0; i <file.length; i ++) {// Если OldPath заканчивается сепаратором пути/или/, тогда letpath/имя файла в порядке // в противном случае, вы должны добавить сепаратор пути после OldPath и добавить имя файла // Кто знает, являются ли параметры, которые вы проходили, f:/a или f:///? if (oldpath.endswith (file.separator)) {temp = new File (OldPath + file [i]); } else {temp = новый файл (oldpath + file.separator + file [i]); } // Если курсор встречается с файлом if (temp.ishile ()) {fileInputStream input = new FileInputStream (temp); FileOutputStream output = new FileOutputStream (newPath + "/" + "rename_" + (temp.getName ()). ToString ()); byte [] bufferarray = новый байт [1024 * 64]; int prereadlength; while ((prereadlength = input.read (bufferarray))! = -1) {output.write (bufferarray, 0, prereadlength); } output.flush (); output.close (); input.close (); } // Если курсор встречает папку if (temp.isdirectory ()) {copyFolder (oldPath + "/" + file [i], newpath + "/" + file [i]); }}} catch (Exception e) {System.out.println ("Ошибка при копировании всего содержания папки"); }}}Может быть немного сложно понять, когда курсор встречает файл. На самом деле, это так. Во -первых, установите поток ввода файла, укажите ввод из файла, встречаемого курсором, а затем укажите вывод в каталог файла newpath/rename_old имени файла. После этого установите буферный массив. Для потока ввода файла, для файла, который вы хотите прочитать, каждый раз, когда вы называете метод чтения, он будет продолжать читать содержимое длины массива буферных массивов буферного буфера массива в позицию, которую вы читаете, хранить содержимое чтения в массив буфера, перезаписывать все содержимое перед массивом буфера, а затем поток файла выводит все содержимое буферизации в разделе Spected Location, пока натекает файл.
Что касается того, почему поток ввода файла может быть в порядке, он будет продолжать читать назад в местоположение, где находится последнее чтение, потому что, когда файл должен быть прочитал, метод Java Encapsulated FileInputStream.Read также вызовет API операционной системы, чтобы прочитать эти данные по очереди. При чтении данных файлов это должно быть в последовательности. Сначала невозможно прочитать первый байт, а затем второй до последнего байта. При чтении цикл метод чтения будет считывать позицию ++, так что каждое чтение считывает следующие байты, пока не будет встретиться в конце файла.
Когда курсор встречает папку, просто позвоните ее снова, чтобы завершить ту же операцию. Это называется итерацией.
3. Следовательно, вся процедура заключается в следующем:
импортировать java.io.*; / **** @param oldpath СПРАВЕТ, который будет скопирован* @param newpath Каталог, который должен быть скопирован**/ class filetest {public void copyfolder (String oldpath, String newpath) {try {// Если папка не существует, создайте новую папку (новый файл (newpath)). mkdirs (); // Прочитайте содержимое всей папки в массив строковых файлов, установите курсор I ниже и постоянно перемещайте его, чтобы начать читать этот массив FileList = новый файл (OldPath); String [] file = fileList.list (); // Обратите внимание, что эта температура является просто временным указателем файла // Вся программа не создает временного файла файла temp = null; для (int i = 0; i <file.length; i ++) {// Если OldPath заканчивается сепаратором пути/или/, тогда letpath/имя файла в порядке // в противном случае, вы должны добавить сепаратор пути после OldPath и добавить имя файла // Кто знает, являются ли параметры, которые вы проходили, f:/a или f:///? if (oldpath.endswith (file.separator)) {temp = new File (OldPath + file [i]); } else {temp = новый файл (oldpath + file.separator + file [i]); } // Если курсор встречается с файлом if (temp.ishile ()) {fileInputStream input = new FileInputStream (temp); FileOutputStream output = new FileOutputStream (newPath + "/" + "rename_" + (temp.getName ()). ToString ()); byte [] bufferarray = новый байт [1024 * 64]; int prereadlength; while ((prereadlength = input.read (bufferarray))! = -1) {output.write (bufferarray, 0, prereadlength); } output.flush (); output.close (); input.close (); } // Если курсор встречает папку if (temp.isdirectory ()) {copyFolder (oldPath + "/" + file [i], newpath + "/" + file [i]); }}} catch (Exception e) {System.out.println ("Ошибка при копировании всего содержания папки"); }}} public class filecopy {public static void main (string args []) {new filetest (). CopyFolder ("f:/a", "f:/b"); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.