Copiando um diretório de um local para outro

Copiando um diretório de um local para outro

Problema

Você deseja copiar um diretório inteiro para outro local.

Você deseja copiá -lo recursivamente, todos os arquivos e subdiretos, para o novo local.

Solução

Use o Arquivo :: copyDirectory () método.

$ success = arquivo :: copyDirectory ($ soucedir, $ destinodir);

O método retornará verdadeiro se todos os arquivos e subdiretórios forem copiados com sucesso.

Se o diretório de destino não existir, ele será criado. Será criado recursivamente conforme necessário.

Discussão

Há um terceiro argumento opcional.

Internamente, o Arquivo :: copyDirectory () O método usa a classe de sistemas -sistemas do PHP para digitalizar os arquivos e diretórios para copiar. O FileSystemiterator leva sinalizadores como um segundo parâmetros. Você pode passar um terceiro argumento para Arquivo :: copyDirectory () que é repassado ao construtor de sistemas de arquivos. Por padrão, Arquivo :: copyDirectory () usa a constante skip_dots.

Isso significa que os arquivos começando com pontos não são copiados.

Tenha cuidado usando esta terceira opção. O Arquivo :: copyDirectory () O método pode não se comportar conforme o esperado, a menos que você entenda bem como o Sistemiterador de Arquivos é usado para Traversal de Diretório.