天天看點

PHP操作之合并CSV檔案夾下的所有CSV檔案内容到一個CSV檔案

工作需要,才有了這麼個奇怪的要求,其實很簡單。

思路是循環周遊檔案夾,讀取每個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);
			}
		}
	}
}