最近获得了一个40多万行数据的文件,需要把这个大文件分成小文件,在做完这件事之后,写个文档记录一下。
相关主要函数
-
ftell() 返回文件指针的当前位置。
-
fseek() 把文件指针从当前位置向前或向后移动到新的位置,新位置从文件头开始以字节数度量。如果成功该函数返回 0,如果失败则返回 -1。
<?php $file = fopen('source/data.txt','r+') or die('fail'); echo ftell($file) . '<br>'; //文件打开的初始指针,0 echo fread($file,20) . '<br>'; //读取前20位字符,换行符算一位字符 echo ftell($file) . '<br>'; //当前指针,20 echo fseek($file, 30) . '<br>'; //重置指针到第30位 echo ftell($file) . '<br>'; //当前指针,30 fclose($file);
输出
0
272731 321343 269707
20
0
30
这些函数提供的功能,可以给拆分文件提供一个思路:将指针不断地移动相同的位数,每移动一次指针得到一个等长字符串,将等长字符串写入新的文件中。