工作需要,才有了这么个奇怪的要求,其实很简单。
思路是循环遍历文件夹,读取每个CSV文件,写入到指定的CSV文件。
代码如下:
<?php
$dirName = "./csvTest"; //遍历这个文件夹
$targetFile = "./newCSV.csv";//保存文件名
// 经理要求:从$dirName 中遍历所有文件。都是.csv文件。把他们组合成一个文件,保存到$targetFile。
mergeCSV($dirName,$targetFile);
function mergeCSV($dirName,$targetFile){
//打开待操作的文件夹句柄
$handle1 = opendir($dirName);
//遍历文件夹
while(($res = readdir($handle1)) !== false){
if($res != '.' && $res != '..'){
//如果是文件,提出文件内容,写入目标文件
if(is_file($dirName.'/'.$res)){
$fileName = $dirName.'/'.$res;
//读
$handle2 = fopen($fileName,'r');
if($str = fread($handle2,filesize($fileName))){
fclose($handle2);
$handle3 = fopen($targetFile,'a+');
if(fwrite($handle3, $str)){
fwrite($handle3,"\n");
fclose($handle3);
}
}
}
//如果是文件夹,继续调用mergeCSV方法
if(is_dir($dirName.'/'.$res)){
$newDirName = $dirName.'/'.$res;
mergeCSV($newDirName,$targetFile);
}
}
}
}