我如何从给定位置从一个文件写入另一个文件

时间:2015-01-07 16:12:35

标签: php

我有一个文件句柄,它已将文件遍历到某个点(基于某些逻辑)

我现在需要将文件的其余部分从句柄位置复制到另一个文件的末尾。

如何在给定文件很大的情况下以最佳方式执行此操作。

漫长的道路将是

while (($line = fgets($handle, 4096)) !== FALSE) {
  write $line to the new file one at a time;
}

1 个答案:

答案 0 :(得分:1)

听起来像stream_copy_to_stream就是这样。

修改:sscce

<?php
$fpSrc = fopen('php://memory', 'rwb');
$fpTarget = fopen('php://memory', 'rwb');

fwrite($fpSrc, join('', range('a', 'z'))); // some dummy data for the source stream
fseek($fpSrc, 0, SEEK_SET); // rewind

/* <--- the relevant code */
// searching for "delimiter"
while(!feof($fpSrc)) {
    $c = fread($fpSrc, 1);
    if ('m'===$c) break;
}
// copy remaining data
stream_copy_to_stream($fpSrc, $fpTarget);
/* end of relevant code ---> */

// rewind & print contents of target stream
fseek($fpTarget, 0, SEEK_SET);
echo stream_get_contents($fpTarget);

打印nopqrstuvwxyz