PHP-Ordner und Dateien verschieben

WBOY
Freigeben: 2016-08-08 09:23:06
Original
3078 Leute haben es durchsucht
Methode 1, Methode „Kopieren + Verknüpfung aufheben“Meine Idee ist: verschieben = neu + löschen. Erstellen Sie vor dem Verschieben einen neuen Ordner im Zielverzeichnis, kopieren Sie dann die Dateien und Verzeichnisse dorthin und löschen Sie sie schließlich.
Der Code lautet wie folgt Code kopieren

/**
* @parammoveDir Dateien und Verzeichnisse ausschneiden
* @param string $zum Zieldateipfad
* @param string $vom Quelldateipfad
*/
function moveDir($from,$to){
if(! is_dir ($from)){//Bestimmen Sie, ob das $from-Quelldateiverzeichnis existiert
return false;
}

 代码如下 复制代码

/**
 * @parammoveDir  剪切文件和目录
 * @param string $to 目标文件路径
 * @param string $from 源文件路径
 */
function moveDir($from,$to){
 if(!is_dir($from)){//判断$from源文件目录是不是存在
  return false;
 }

 $from = rtrim(str_replace(‘//’,'/’,$from), ‘/’);//为了在linux上兼容,我们把/符号全部转换成/因为windows下面2个符号都可以的. 
 $files = scandir($from);//列出源文件目录的文件和文件夹,并且以数组的形式存入 $files。

/*

$files的输出结果:

Array ( [0] => . [1] => .. [2] => a [3] => b [4] => c [5] => dir [6] => dir.php [7] => dir2 [8] => dir2.php [9] => function_file.php [10] => homework.php )
可以看到scandir这个函数会输出2个多余的值: [0] => . [1] => ..在这对我们木有用.写一个if干掉他们。
*/
 foreach($files as $file){//对 $files数组进行遍历,方便对数组里面的文件夹和文件进行复制和删除.
  if(in_array($file, array(‘.’,’..’))){// array(‘.’,’..’)新建了一个只有.和..的数组,并且查找$file里面知否有.和..这2个值
   continue;
  }
  $subFrom = $from.’/’.$file;//把遍历后的文件夹或者文件名变成一个新的路径
     $subTo = $to.’/’.$file;

  if(is_dir($subFrom)){
   @mkdir($subTo);//判断$subFrom是不是一个目录,如果是目录就在目标的目录下面,新建一个目录
   moveDir($subFrom, $subTo);//递归执行新建目录。
  }else{//不是目录的话,就直接复制文件.复制完就删除文件.
   copy($subFrom, $subTo);
   unlink($subFrom);//删除所有文件
  }
  @rmdir($subFrom);//删除所有的目录
 }
 return true;
}
moveDir(‘C:/Users/Administrator/Desktop/0704′,’e:’);//在这传递你要移动的文件或者目录的地址

$from = rtrim(str_replace('//','/', $ from), '/');//Um unter Linux kompatibel zu sein, konvertieren wir alle /-Symbole in /, da beide Symbole unter Windows akzeptabel sind
$files = scandir($from);//List The Dateien und Ordner im Quelldateiverzeichnis werden in $files in Form eines Arrays

/*

Die Ausgabe von $files:

Array ( [0 ] => .. [2] => [ 7] => dir2 [8] => dir2.php [9] => function_file.php [10] => Sie können sehen, dass die Scandir-Funktion 2 redundante Werte ausgibt : [0] => [1] => Es ist für uns nicht sinnvoll, sie zu töten. Für $. Durchlaufen Sie das Dateiarray, um das Kopieren und Löschen von Ordnern und Dateien im Array zu erleichtern.
if(in_array($file, array('.','..'))){// array('.' ,'..') erstellt ein neues Array nur mit . und .. und durchsucht $file, um zu sehen, ob es . und ..-Werte gibt
continue;
}
$subFrom = $from .' /'.$file;//Den durchlaufenen Ordner oder Dateinamen in einen neuen Pfad ändern
$subTo = $to.'/'.$file;

if(is_dir ($subFrom)){
@mkdir($subTo);//Bestimmen Sie, ob $subFrom ein Verzeichnis ist. Wenn es sich um ein Verzeichnis handelt, erstellen Sie ein neues Verzeichnis unter dem Zielverzeichnis
moveDir($subFrom, $subTo) ;//Rekursiv ausführen das neue Verzeichnis.
}else{//Wenn es sich nicht um ein Verzeichnis handelt, kopieren Sie die Datei direkt. Löschen Sie die Datei nach dem Kopieren.
copy($subFrom, $subTo);
unlink($subFrom);//Löschen alle Dateien }
@rmdir($subFrom);//Alle Verzeichnisse löschen
}
return true;
}
moveDir('C:/Users/Administrator/Desktop/ 0704′ ,'e:');//Übergeben Sie die Adresse der Datei oder des Verzeichnisses, die Sie hierher verschieben möchten

Methode 2, umbenennen 1. Bei Dateien kann das Umbenennen zwischen verschiedenen Laufwerksbuchstaben erfolgen.
 代码如下 复制代码


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

2. Bei leeren Ordnern kann das Umbenennen auch zwischen verschiedenen Laufwerksbuchstaben erfolgen vorhanden sein.3. Bei nicht leeren Ordnern können sie nur unter demselben Laufwerksbuchstaben verschoben werden. Allerdings sollten 1 und 3 in der Lage sein, fast alle Anwendungssituationen zu bewältigen. Der Code lautet wie folgt Code kopieren td>


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

Für eine 40-MB-Datei dauert die Methode „Kopieren + Verknüpfung aufheben“ 7,6249899864197 Sekunden, während die Methode „Umbenennen“ nur 0,024738788604736 benötigt, was 300-mal schneller ist.BeispielDer Code lautet wie folgt
Code kopieren td>
 代码如下 复制代码

//定义一个变量,保存文件名
$file = "html/cache.txt";
$rename = "html/renameCache.txt";
//使用rename()函数重命名一个文件
if(rename($file,$rename)==TRUE){
echo "重命名文件成功!";
}else{
echo "重命名文件失败!";
}
//使用rename()函数移动文件,并改名
rename("html/renameCache.txt","html/a/2.txt");
//使用rename()函数重命名目录
rename("html","cache");
//使用rename()函数移动目录到目标目录
rename("b","cache/b");
?>

//Definieren Sie eine Variable zum Speichern der Dateiname
$file = "html/cache.txt";
$rename = "html/renameCache.txt";
//Verwenden Sie die Funktion rename(), um eine Datei umzubenennen
wenn (rename($file,$ rename)==TRUE){
echo „Datei erfolgreich umbenennen!“;
}else{
echo „Datei umbenennen fehlgeschlagen!“;
}
/ /Verwenden Sie rename() Die Funktion verschiebt die Datei und benennt sie um
rename("html/renameCache.txt","html/a/2.txt");
//Verwenden Sie die Funktion rename() zum Umbenennen das Verzeichnis
rename("html ","cache");
//Verwenden Sie die Funktion rename(), um das Verzeichnis in das Zielverzeichnis zu verschieben
rename("b","cache/b") ;
?>

Das Obige stellt die mobilen PHP-Ordner und -Dateien vor, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!