手册里是这样写的:
fread() 从文件指针 handle 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件,视乎先碰到哪种情况。
<?php
$handle = fopen ("你的文件", "rb")
$contents = ""
while (!feof($handle)) {
$contents .= fread($handle, 8192)
}
fclose($handle)
?>
fp = open(filepath,"rb")while True:
content = fp.read(10240) #每次读取的10240字节的数据
if not content:
break
fp.close()
大文件可以被一部分一部分地读,这在windows里被以虚拟内存映射文件的方式实现。而不能用其本身的文件流,因为它自己是调用系统API实现的,而又缺少参数,便保险地映射全部文件到内存,而一般系统的虚拟地址空间为用户2G,服务器上才3G。而2G里显然要包括程序文件本身与环境子系统DLL们。所以剩下不足2G了,这下就不够用了,所以不能用C++里的文件流。用windows系统自带的API函数可以实现分块映射读取,当然读完一块要释放掉,不然最后还是不够用,这样就行了,你可以看书去了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)