工作需要,才有了這麼個奇怪的要求,其實很簡單。
思路是循環周遊檔案夾,讀取每個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);
}
}
}
}