我尝试从文件夹中读取所有*.txt
个文件,并将每个文件中的所有内容写入另一个txt文件。但不知何故,它只在txt文件中写入一行。
我尝试使用fwrite()
和file_put_contents()
,但都没有效果。
这是我的代码:
<?php
$dh = opendir('/Applications/XAMPP/xamppfiles/htdocs/test/');
while($file = readdir($dh)) {
$contents = file_get_contents('/Applications/XAMPP/xamppfiles/htdocs/test/' . $file);
$dc = array($contents);
}
file_put_contents('content.txt', $dc);
?>
答案 0 :(得分:7)
这应该适合你:
(这里我在glob()
的目录中获取所有* .txt文件。之后我使用foreach循环遍历每个文件并使用file_get_contents()
获取每个文件的内容并放入使用file_put_contents()
)
<?php
$files = glob("path/*.txt");
$output = "result.txt";
foreach($files as $file) {
$content = file_get_contents($file);
file_put_contents($output, $content, FILE_APPEND);
}
?>
答案 1 :(得分:1)
试试这个
$contents = array();
$line = file(/*next file in dir*/);
foreach($lines as line){
array_push($line, $contents);
}
//File path of final result
$filepath = "mergedfiles.txt";
$out = fopen($filepath, "w");
//Then cycle through the files reading and writing.
foreach($filepathsArray as $file){
$in = fopen($file, "r");
while ($line = fgets($in)){
print $file;
fwrite($out, $line);
}
fclose($in);
}
//Then clean up
fclose($out);
return $filepath;