php でファイルの移動とコピーに copy を使用します。ディレクトリとディレクトリ ファイルの移動を実装する簡単な例を見てみましょう。この記事が皆様のお役に立てれば幸いです。
方法 1、コピー+リンク解除方法
私のアイデアは、移動 = 新規 + 削除です。移動する前に、移動先のディレクトリに新しいフォルダーを作成し、そこにファイルとディレクトリをコピーし、最後に削除します。
コードは次のとおりです |
コードをコピー |
/**
* @parammoveDir ファイルとディレクトリを切り取ります
* @param string $ターゲットファイルパスへ
* @param string $ソースファイルパスから
*/
関数 moveDir($from,$to){
if(!is_dir($from)){//$from ソース ファイル ディレクトリが存在するかどうかを判断します
false を返します;
}
$from = rtrim(str_replace('//','/',$from), '/');//Linux との互換性を保つために、すべての / 記号を / に変換します。Windows では次の 2 つの記号が使用されるためです。 を使用できます。
$files = scandir($from);//ソース ファイル ディレクトリ内のファイルとフォルダーをリストし、配列形式で $files に保存します。
/*
$files の出力:
配列 ( [0] => . [1] => .. [2] => a [3] => b [4] => c [5] => dir [6] = > dir.php [7] => dir2 [9] => 宿題.php )
scandir 関数が 2 つの冗長な値を出力することがわかります: [0] => . [1] => それらを強制終了するために if を書くことは役に立ちません。
*/
foreach($files as $file){// $files 配列を走査して、配列内のフォルダーとファイルのコピーと削除を容易にします。
if(in_array($file, array('.','..'))){// array('.','..') は . と ... のみを含む新しい配列を作成し、$file 内を検索します。 .と..の2つの値があるかどうか知っていますか?
続けます;
}
$subFrom = $from.’/’.$file;//トラバースしたフォルダーまたはファイル名を新しいパスに変換します
$subTo = $to.’/’.$file;
if(is_dir($subFrom)){
@mkdir($subTo);//$subFrom がディレクトリであるかどうかを判断し、ディレクトリの場合は、ターゲット ディレクトリの下に新しいディレクトリを作成します
moveDir($subFrom, $subTo);//新しいディレクトリを再帰的に作成します。
}else{// ディレクトリではない場合は、ファイルを直接コピーします。コピー後にファイルを削除します。
コピー($subFrom, $subTo);
unlink($subFrom);//すべてのファイルを削除します
}
@rmdir($subFrom);//すべてのディレクトリを削除します
}
true を返します;
}
moveDir('C:/Users/Administrator/Desktop/0704','e:');//ここに移動したいファイルまたはディレクトリのアドレスを渡します
|
方法 2、名前を変更する
1. ファイルの名前を変更すると、異なるドライブ文字間で移動できます。
2. 空のフォルダーの場合、名前の変更は異なるドライブ文字間で移動することもできます。ただし、ターゲットフォルダーの親ディレクトリが存在する必要があります。
3. 空でないフォルダーの場合は、同じドライブ文字の下にのみ移動できます。ただし、1 と 3 はほとんどすべてのアプリケーションの状況に対応できるはずです。
コードは次のとおりです
コードをコピー
|
|
rename("D:/testdir/test","F:/totestdir/mydir");
?>
40M ファイルの場合、コピー + リンク解除方法には 7.6249899864197 秒かかりますが、名前変更方法にはわずか 0.024738788604736 秒しかかかりません。これは 300 倍高速です。
例
コードは次のとおりです |
コードをコピー |
//ファイル名を保存する変数を定義します
$file = "html/cache.txt";
$rename = "html/renameCache.txt";
// rename() 関数を使用してファイルの名前を変更します
if(rename($file,$rename)==TRUE){
echo "ファイルの名前が正常に変更されました!";
}その他{
echo "ファイル名の変更に失敗しました!";
}
// rename() 関数を使用してファイルを移動し、名前を変更します
rename("html/renameCache.txt","html/a/2.txt");
// rename() 関数を使用してディレクトリの名前を変更します
rename("html","キャッシュ");
// rename() 関数を使用して、ディレクトリをターゲット ディレクトリに移動します
rename("b","cache/b");
?>
|
|
http://www.bkjia.com/PHPjc/633122.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/633122.html技術記事 php でファイルを移動およびコピーするには copy を使用します。ディレクトリとディレクトリ ファイルの移動を実現する簡単な例を以下に見てみましょう。この記事が皆様のお役に立てれば幸いです。 方法 1、コピー+アン...