PHP Move folders and files

Source: Internet
Author: User
Method One, Copy+unlink way

My idea is: move = new + DELETE. Create a new folder in the target directory before moving it, and then copy the files and directories in the past, and then delete them at the end of the execution.

The code is as follows Copy Code

/**
* @parammoveDir cut files and directories
* @param string $to destination file path
* @param string $from source file path
*/
function Movedir ($from, $to) {
if (!is_dir ($from)) {//Determine $from source file directory is not present
return false;
}

$from = RTrim (Str_replace ('///', '/', $from), '/');//To be compatible with Linux, we convert/sign all to/because 2 symbols are available under Windows.
$files = Scandir ($from),//lists the files and folders of the source file directory, and deposits the $files as an array.

/*

$files output:

Array ([0] = =. [1] = =. [2] = a [3] = b [4] = = c [5] = dir [6] = dir.php [7] = = DIR2 [8] = = dir2.php [9] = Function_f ile.php [Ten] = homework.php)
You can see that the Scandir function outputs 2 extra values: [0] + =. [1] = =. It is useful for us wood. Write a if kill them.
*/
The foreach ($files as $file) {//$files array is traversed to facilitate the copying and deletion of the folders and files inside the group.
if (In_array ($file, Array ('. ', '. '))) {//Array ('. ', ' ... ') ) A new one with only. and. And look for $file inside to know if there are any. and. These 2 values
Continue
}
$subFrom = $from. ' /'. $file;//Change the folder or file name after the Traverse to a new path
$subTo = $to. ' /'. $file;

if (Is_dir ($subFrom)) {
@mkdir ($subTo);//Determine $subfrom is not a directory, if it is the directory under the target directory, create a new directory
Movedir ($subFrom, $subTo);//execute new directory recursively.
If the}else{//is not a directory, copy the file directly. Delete the file after copying it.
Copy ($subFrom, $subTo);
Unlink ($subFrom);//Delete all Files
}
@rmdir ($subFrom);//Delete all directories
}
return true;
}
Movedir (' c:/users/administrator/desktop/0704′, ' e: ');//In this pass the address of the file or directory you want to move

Method Two, rename

1. For files, rename can be moved between different drive characters.

2. For empty folders, rename can also move between different drive characters. However, the parent directory of the destination folder must exist.

3. For non-empty folders, you can only move under the same drive. However, 1 and 3 should be able to deal with almost any application situation.

The code is as follows Copy Code


Rename ("D:/testdir/test", "F:/totestdir/mydir");
?>

For a 40M file, the Copy+unlink method takes 7.6249899864197 seconds, while the Rename method requires only 0.024738788604736, 300 times times faster.

code as follows copy code
!--? PHP //Define a variable, save the file name
$file = "Html/cache.txt";
$rename = "Html/renamecache.txt";
//Use the rename () function to rename a file
if (rename ($file, $rename) ==true) {
echo "rename file succeeded!";
}else{
Echo "Failed to rename file!";
}
//Use the rename () function to move the file and rename the
rename ("Html/renamecache.txt", "Html/a/2.txt");
Use the rename () function to rename the directory
Rename ("HTML", "cache");
Use the rename () function to move the directory to the target directory
Rename ("B", "cache/b");
?

The above describes the PHP mobile folders and files, including aspects of the content, you want to be interested in PHP tutorial friends helpful.

  • Related Article

    Contact Us

    The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

    If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.