/**
* 104857600=100mb
* 10485760=10mb
* 10485760/5=2mb
* 读取的定义为源文件
* 写入的定义为目标文件
*/
$size=filesize('201808.txt')
$i=0
$block_info = []
while($size>0){
//组建规格数组
$block_info[]=[
'size' =>$size>=104857600?104857600:$size,//目标文件大小
'file' =>str_replace('.txt', '','201808.txt').'.'.($i++).'.txt'//目标文件名
]
$size-=104857600//源文件大小递减
}
$fp = fopen('201808.txt',"rb")//打开源文件
foreach($block_info as $k =>$v){
$handle = fopen($v['file'],'wb')//创建并打开目标文件
fwrite($handle,fread($fp,$v['size']))//fwrite函数写入目标文件,fread函数读取源文件并读取设定字节数
fclose($handle)//关闭目标文件
unset($handle)//销毁变量
}
fclose ($fp)//结束关闭源文件
unset($fp)//销毁变量
echo "ok"//输出结果
如果文件不是很大的情况,试试下面这个:
<?phpfunction split_file($file_name, $number_lines)
{
try
{
if(!file_exists($file_name)) throw new Exception("文件不存在!")
$contents_array = array_chunk(file($file_name), $number_lines)
if(!$contents_array || !is_array($contents_array)) throw new Exception("文件内容不合法!")
array_walk($contents_array, function($contents, $k){
foreach($contents as $value){
file_put_contents($k . '.txt', $value, FILE_APPEND)
}
})
}
catch(Exception $e)
{
echo $e->getMessage()
}
}
split_file("README.md", 200)
需要准备的材料分别是:电脑、php编辑器、浏览器。
1、首先,打开php编辑器,新建php文件,例如:index.php。
2、在index.php中,输入代码:
$a = 19841231$b = []$c = []
while($a >0) {
$t = $a % 10
$a = intval($a / 10)
$b[] = $t
if (!isset($c[$t])) {
$c[$t] = 0
}
$c[$t]++
}
$b = array_reverse($b)
print_r($b)echo '<br/>'print_r($c)
3、浏览器运行index.php页面,此时打印出了19841231分割成一个个后的数组,以及各个数组出现的个数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)