我想在PHP中切断大文件的开头。由于内存限制,无法使用file_get_contents()
。
从文件中删除第一个$n
字符的最佳方法是什么?
如果可以在不创建第二个文件的情况下执行此操作,我宁愿选择该解决方案。
更新修改文件后,其他脚本将使用该文件。
答案 0 :(得分:2)
如果您没有足够的内存来缓冲整个文件,那么无论您的解决方案是什么,都需要创建两个文件(至少是暂时的)。
查看fseek()
,它允许您转到文件中的特定字节位置。
// Open the file
$filename = 'somefile.dat';
$file = fopen($filename, 'r');
// Skip the first 1 KB
fseek($file, 1024);
// Your processing goes here...
// Close the file
fclose($file);
在您的情况下,您可以打开原始文件进行读取,并打开临时文件以进行同时写入。寻找原始文件。循环遍历原始文件,读取一小块并将其写入临时文件。然后将temp重命名为与原始名称相同。