php课程 10-34 目录遍历中的注意事项是什么
一、总结
一句话总结:用scandir,会把目录和文件放到一个数组中。
1、移动文件怎么实现,php里面没有移动文件这个函数?
先复制,再删除
2 //删除目录
3 function delDir($dir){
4 $files=scandir($dir);
5 foreach($files as $key=>$val){
6 if($key>1){
7 $file=$dir.'/'.$val;
8
9 if(is_dir($file)){
10 delDir($file);
11 }else{
12 unlink($file);
13 }
14 }
15 }
16 rmdir($dir);
17 }
18
19 // 复制目录
20 function copyDir($dir1,$dir2){
21 mkdir($dir2);
22 $files=scandir($dir1);
23 foreach($files as $key=>$val){
24 if($key>1){
25 $file1=$dir1.'/'.$val;
26 $file2=$dir2.'/'.$val;
27
28 if(is_dir($file1)){
29 copyDir($file1,$file2);
30 }else{
31 copy($file1,$file2);
32 }
33 }
34 }
35 }
36
37 //移动目录
38 function moveDir($dir1,$dir2){
39 copyDir($dir1,$dir2);
40 delDir($dir1);
41 }
42
43 $dir1='img';
44 moveDir($dir1,'img3');
2、如何删除一个非空目录,php默认函数没有?
rmdir不能删除非空目录
直接百度,找第三方的代码集合
3、目录遍历的时候,为什么没有显示点(.)(本级目录)和点点(..)(上一级目录)?
遍历目录的时候,点(.)和点点(..)是一直都存在的,只不过被影藏了
在dos下敲dir,也会出现点(.)(本级目录)和点点(..)(上一级目录)这两个
无论在windows和linux里面,点和点点都被影藏了
7 while($file=readdir($od)){
8 if($file!='.' && $file!='..'){
9 echo $file.'<br>';
10 }
11 }
4、如何在一个文件中两次使用opendir,有什么注意事项?
前一次opendir之后必须closedir关闭,后一次的opendir然后才能打开,不然会报错
5、目录遍历,什么函数最好用?
scandir,用scandir,会把目录和文件放到一个数组中。
3 $dir='imgs';
4
5 $arr=scandir($dir);
6
7 foreach($arr as $key=>$val){
8 if($key>1){
9 echo $key.'-'.$val.'<br>';
10 }
11 }
二、目录遍历中的注意事项是什么
1、相关知识
目录操作:
1.遍历目录
opendir();
readdir();
closedir();
scandir();
2.创建空目录
mkdir();
3.删除空目录
rmdir();
4.删除完整目录(delDir)
scandir();
function delDir($dir){
$files=scandir($dir);
foreach($files as $key=>$val){
if($key>1){
$file=$dir.'/'.$val;
if(is_dir($file)){
delDir($file);
}else{
unlink($file);
}
}
}
rmdir($dir);
}
5.复制完整目录(cpDir)
function copyDir($dir1,$dir2){
mkdir($dir2);
$files=scandir($dir1);
foreach($files as $key=>$val){
if($key>1){
$file1=$dir1.'/'.$val;
$file2=$dir2.'/'.$val;
if(is_dir($file1)){
copyDir($file1,$file2);
}else{
copy($file1,$file2);
}
}
}
}
6.移动完整目录(mvDir)
copyDir();
delDir();
2、代码
moveDir移动目录
1 <?php 2 //删除目录 3 function delDir($dir){ 4 $files=scandir($dir); 5 foreach($files as $key=>$val){ 6 if($key>1){ 7 $file=$dir.'/'.$val; 8 9 if(is_dir($file)){ 10 delDir($file); 11 }else{ 12 unlink($file); 13 } 14 } 15 } 16 rmdir($dir); 17 } 18 19 // 复制目录 20 function copyDir($dir1,$dir2){ 21 mkdir($dir2); 22 $files=scandir($dir1); 23 foreach($files as $key=>$val){ 24 if($key>1){ 25 $file1=$dir1.'/'.$val; 26 $file2=$dir2.'/'.$val; 27 28 if(is_dir($file1)){ 29 copyDir($file1,$file2); 30 }else{ 31 copy($file1,$file2); 32 } 33 } 34 } 35 } 36 37 //移动目录 38 function moveDir($dir1,$dir2){ 39 copyDir($dir1,$dir2); 40 delDir($dir1); 41 } 42 43 $dir1='img'; 44 moveDir($dir1,'img3'); 45 ?>
opendir和readdir目录遍历
1 <?php 2 3 $dir='imgs'; 4 5 $od=opendir($dir); 6 7 while($file=readdir($od)){ 8 if($file!='.' && $file!='..'){ 9 echo $file.'<br>'; 10 } 11 } 12 ?>
scandir目录遍历
1 <?php 2 3 $dir='imgs'; 4 5 $arr=scandir($dir); 6 7 foreach($arr as $key=>$val){ 8 if($key>1){ 9 echo $key.'-'.$val.'<br>'; 10 } 11 } 12 ?>