2015-02-22 06:40 阅读 217


I try to read all *.txt files from a folder and write all content from each file into another txt file. But somehow it only writes one line into the txt file.

I tried with fwrite() and file_put_contents(), neither worked.

Here is my code:


    $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);

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    dongmi4734 dongmi4734 2015-02-22 06:45

    This should work for you:

    (Here I get all *.txt files in a directory with glob(). After this I loop through every file with a foreach loop and get the content of each single file with file_get_contents() and I put the content into the target file with file_put_contents())

        $files = glob("path/*.txt");
        $output = "result.txt";
        foreach($files as $file) {
            $content = file_get_contents($file);
            file_put_contents($output, $content, FILE_APPEND);
    点赞 评论 复制链接分享
  • duanmen2189 duanmen2189 2015-02-22 06:43

    try this

    $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);
        //Then clean up
        return $filepath;
    点赞 评论 复制链接分享