PHP递归整理文件夹,按日期递归实现保存文件。
代码:
<?php /** * 递归整理文件 按日期 * edit by www.jb200.com */ //调用函数test("test"); echo "整理完成!"; //echo is_dir("test/Data"); function test($dire) { //打开文件夹 $dir = opendir($dire); while(($file = readdir($dir))!= false) { //如果是上级目录和根目录程序继续进行,不能递归调用函数,否则会出现无限递归 if($file == '.'|| $file == "..") { continue; } //如果文件时目录就调用自身的函数继续执行 if(is_dir($dire."/".$file)) { test($dire."/".$file); //echo "Directory: ".$file."<br/>"; } else { //当不是目录时 //echo "filename: ".$file."<br/>"; $f = $dire."/".$file; //打开文件,以只读模式 $handle = fopen($f,"r"); $fstat = fstat($handle); //文件的修改日期 $fdate = date("Y-m-d",$fstat["mtime"]); $flag = false; //echo $fdate."<br/>"; //创建以日期命名的目录,如果存在就不在重复创建,如果不存在就创建 $dir1 = opendir("date"); while(($file1 = readdir($dir1))!=false) { //判断是否存在以该日期命名的目录 if($file1 == $fdate ) { $flag = true; } } if(!$flag) { mkdir("./date/".$fdate,0700); } if (!copy($dire."/".$file,"./date/".$fdate."/".$file)) { echo "failed to copy $file...n"; } //echo "filename: ".$file." 最后修改时间:".date("Y-m-d",$fstat["mtime"])."<br/>"; } } return; } /* 获得文件信息的例子 $file = "2013-7-30.php"; //打开文件,r表示以只读方式打开 $handle = fopen($file,"r"); //获取文件的统计信息 $fstat = fstat($handle); echo "文件名:".basename($file)."<br>"; //echo "文件大小:".round(filesize("$file")/1024,2)."kb<br>"; echo "文件大小:".round($fstat["size"]/1024,2)."kb<br>"; //echo "最后访问时间:".date("Y-m-d h:i:s",fileatime($file))."<br>"; echo "最后访问时间:".date("Y-m-d",$fstat["atime"])."<br>"; //echo "最后修改时间:".date("Y-m-d h:i:s",filemtime($file))."<br>"; echo "最后修改时间:".date("Y-m-d",$fstat["mtime"]); */ /*创建目录例子 mkdir("./123", 0700);*/ /*将一个文件复制到另一个位置例子 $source = '2013-7-30.php'; $dest = 'date/2013.php'; if (!copy($source, $dest)) { echo "failed to copy $file...n"; } */ ?>