Страницы

Поиск по вопросам

четверг, 19 марта 2020 г.

Перенос папок в папку

#файлы #php


Есть папка A
Есть папка Б
Нужно перенести содержимое Б в А. Содержимое может совпадать по имени.
Т.е. если совпали папки, то просто переносится содержимое папки, если совпали файлы,
то перезаписываются. Если папки нет, то создается и переносятся данные. Здесь очень
похожая функция, но не работает с совпадениями. Думаю многие встречались с подобным.
p.s. как запасной план, использовать линуксовые возможности.    


Ответы

Ответ 1



Создается функция которая принимает на вход путь и создаёт папки для этого пути. (например, mkdirs('/home/pupkin/dirs/A'); на каждой папке проверяет её существование, если папки не существует - то создаём её если существует то ничего не делаем, переходим к вледующей части пути) Создаётся функция рекурсивного копирования. recursiveCopy($from, $to) читаем содержимое папки $from в цикле: если это файл то: копируем его из $from.'/'.$file в $to.'/'.$file если это папка: mkdirs($to.'/'.$file); recursiveCopy($from.'/'.$file, $to.'/'.$file); вот и всё.

Ответ 2



Вот, готовый код. $from - откуда копируем, $to - куда. Пути задавать полные (ну по крайне мере у меня работает так, если $from/$to = '../from/'/'../to/') Одно, что папки from и to должны быть указаны, остальные папки, которые есть в папке from, в to создаются сами, удачной работы)) function recursiveCopy($from, $to){ if(!file_exists($to)){ mkdir($to); } if ($objs = glob($from."/*")) { foreach($objs as $obj) { $forto=$to.str_replace($from, '', $obj); // echo $to.'
'; if(is_dir($obj)){ removeDirRec($obj, $forto); } else{ copy($obj, $forto); } } } return true; }

Комментариев нет:

Отправить комментарий