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";
}
*/
?>