php - flyt alle filer og mapper i en mappe til en anden?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil flytte alle filer og mapper inde i en mappe til en anden mappe. Jeg fandt en kode til at kopiere alle filer inde i en mappe til en anden mappe.
flyt alle filer i en mappe til en anden


// Get array of all source files
$files = scandir("source");
// Identify directories
$source = "source/";
$destination = "destination/";
// Cycle through all source files
foreach ($files as $file) {
  if (in\_array($file, array(".",".."))) continue;
  // If we copied this successfully, mark it for deletion
  if (copy($source.$file, $destination.$file)) {
    $delete[] = $source.$file;
  }
}
// Delete all successfully-copied files
foreach ($delete as $file) {
  unlink($file);
}


Hvordan ændrer jeg dette for at flytte alle mapper og filer inde i denne mappe til en anden mappe.

Bedste reference


Dette er hvad jeg bruger


   // Function to remove folders and files 
    function rrmdir($dir) {
        if (is\_dir($dir)) {
            $files = scandir($dir);
            foreach ($files as $file)
                if ($file != "." && $file != "..") rrmdir("$dir/$file");
            rmdir($dir);
        }
        else if (file\_exists($dir)) unlink($dir);
    }

    // Function to Copy folders and files       
    function rcopy($src, $dst) {
        if (file\_exists ( $dst ))
            rrmdir ( $dst );
        if (is\_dir ( $src )) {
            mkdir ( $dst );
            $files = scandir ( $src );
            foreach ( $files as $file )
                if ($file != "." && $file != "..")
                    rcopy ( "$src/$file", "$dst/$file" );
        } else if (file\_exists ( $src ))
            copy ( $src, $dst );
    }


Anvendelse


    rcopy($source , $destination );


Et andet eksempel uden at slette destinationsfil eller mappe


    function recurse\_copy($src,$dst) { 
        $dir = opendir($src); 
        @mkdir($dst); 
        while(false !== ( $file = readdir($dir)) ) { 
            if (( $file != '.' ) && ( $file != '..' )) { 
                if ( is\_dir($src . '/' . $file) ) { 
                    recurse\_copy($src . '/' . $file,$dst . '/' . $file); 
                } 
                else { 
                    copy($src . '/' . $file,$dst . '/' . $file); 
                } 
            } 
        } 
        closedir($dir); 
    } 


Se venligst: http://php.net/manual/en/function.copy.php for flere saftige eksempler [14]


Tak
:)

Andre referencer 1


Brug rename i stedet for copy. [15]


I modsætning til C-funktionen med samme navn kan rename flytte en fil fra et filsystem til et andet (siden PHP 4.3.3 på Unix og siden PHP 5.3.1 på Windows).

Andre referencer 2


Tænk dette bør gøre det trick:
http://php.net/manual/en/function.shell-exec.php[16]


shell\_exec("mv sourcedirectory path\_to\_destination");


Håber denne hjælp.

Andre referencer 3


Move\_Folder\_To("./path/old\_folder\_name",   "./path/new\_folder\_name"); 


funktionskode:


function Move\_Folder\_To($source, $target){
    if( !is\_dir($target) ) mkdir(dirname($target),null,true);
    rename( $source,  $target);
}

Andre referencer 4


$src = 'user\_data/company\_2/T1/';
$dst = 'user\_data/company\_2/T2/T1/';

rcopy($src, $dst);  // Call function 
// Function to Copy folders and files       
function rcopy($src, $dst) {
    if (file\_exists ( $dst ))
        rrmdir ( $dst );
    if (is\_dir ( $src )) {
        mkdir ( $dst );
        $files = scandir ( $src );
        foreach ( $files as $file )
            if ($file != "." && $file != "..")
                rcopy ( "$src/$file", "$dst/$file" );

    } else if (file\_exists ( $src ))
        copy ( $src, $dst );
                    rrmdir ( $src );
}       

// Function to remove folders and files 
function rrmdir($dir) {
    if (is\_dir($dir)) {
        $files = scandir($dir);
        foreach ($files as $file)
            if ($file != "." && $file != "..") rrmdir("$dir/$file");
        rmdir($dir);
    }
    else if (file\_exists($dir)) unlink($dir);
}

Andre referencer 5


Jeg bruger det


// function used to copy full directory structure from source to target
function full\_copy( $source, $target )
{
    if ( is\_dir( $source ) )
    {
        mkdir( $target, 0777 );
        $d = dir( $source );

        while ( FALSE !== ( $entry = $d->read() ) )
        {
            if ( $entry == '.' || $entry == '..' )
            {
                continue;
            }

            $Entry = $source . '/' . $entry;           
            if ( is\_dir( $Entry ) )
            {
                full\_copy( $Entry, $target . '/' . $entry );
                continue;
            }
            copy( $Entry, $target . '/' . $entry );
        }

        $d->close();

    } else {
        copy( $source, $target );
    }
}