Copia di una directory da una posizione all'altra

Copia di una directory da una posizione all'altra

Problema

Vuoi copiare un'intera directory in un'altra posizione.

Vuoi copiarlo in modo ricorsivo, tutti i file e le sottodirectory, nella nuova posizione.

Soluzione

Usa il File :: CopyDirectory () metodo.

$ success = file :: copyDirectory ($ Sourcedir, $ DestinationDir);

Il metodo restituirà vero se tutti i file e le sottodirectory vengono copiati correttamente.

Se la directory di destinazione non esiste, verrà creata. Sarà creato in modo ricorsivo se necessario.

Discussione

C'è un terzo argomento opzionale.

Internamente, il File :: CopyDirectory () Il metodo utilizza la classe di filesmiterator di PHP per scansionare i file e le directory per copiare. Il filesystemiterator prende flag come secondo parametri. Puoi passare un terzo argomento a File :: CopyDirectory () che viene passato al costruttore di filesystemiterator. Per impostazione predefinita, File :: CopyDirectory () usa costante la costante skip_dots.

Ciò significa che i file che iniziano con punti non vengono copiati.

Fai attenzione usando questa terza opzione. IL File :: CopyDirectory () Il metodo potrebbe non comportarsi come previsto a meno che non si capisca bene come viene utilizzato il filesystemiterator per il traversario della directory.