我的文件很大,不想全部读取,再随机一行,想通过文件指针随机读取一行?

1273517

12736

1273521

127

127358612735381273538fa

1273606

13

1273636

...

回复内容:

我的文件很大,不想全部读取,再随机一行,想通过文件指针随机读取一行?

1273517

12736

1273521

127

127358612735381273538fa

1273606

13

1273636

...

现在有一个10G文件,要随机获取其中的一行数据。肯定不能一次把内容全部读取!!!

因此可以按字节随机读取

使用函数:

filesize 获取此文件的总字节

ftell 当前文件指针位置

fseek 定位文件指针位置

fgets 按行读取文件

实现思路有了吧:

开始位置可以随机取,即可实现随机读取数据。

比如总字节100,一行10字节,开始读取字节的位置随机取0~90字节中间的数。

为了数据的完整性,可以多读几行,那么结束位置就设为:开始位置+行数*每行字节大小

反正大概那个数就行了

因为每次读取不可能是一行的头,因为可以多读几行,然后用explode分割成一个数组,抛弃数组首尾,再随机获取其中的一条

下面这是按字节分页读取文件的内容,可以做个参考

public static function readFileBySize($file, $currentPage=1, $pageSize=100000)

{

$read = "";

$fileSize = filesize($file);

$totalPage = ceil($fileSize/$pageSize);

$start = filesize($file) - $currentPage*$pageSize;

$stop = filesize($file) - ($currentPage-1)*$pageSize;

$fp = fopen($file, 'r');

fseek($fp, $start, SEEK_SET);

while(ftell($fp) < $stop){

$read .= fgets($fp);

}

fclose($fp);

$memory = function_exists('ini_get') ? ini_get("memory_limit"):0;

$returnData = array(

"fileSize" => $fileSize,

"pageSize" => $pageSize,

"totalPage" => $totalPage,

"currentPage" => $currentPage,

"memory" => $memory,

"data" => $read

);

return $returnData;

}

文件不大可以直接用file()函数读取一个文件,返回一个数组,数组的每一个元素对应文件的一行.

文件大的话可以用文件指针.

$i++;

if($i === 4){ // if lines = 4

echo fgets($fp);

}

}

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php输出单行,file - php如何随机输出文件内一行?相关推荐

  1. Python:读出文本本件,统计单词数输出;读出文本文件,随机输出其中的10个单词

    #读出文本本件,统计单词数输出:读出文本文件,随机输出其中的10个单词 import re import random f=open("this.txt","r" ...

  2. 【IO面试题】打印目录树形结构,并输出到file.txt中

    1 package com.peter.solution; 2 3 import java.io.File; 4 import java.io.FileWriter; 5 import java.io ...

  3. linux命令行 随机排列,有趣的Linux命令行:随机输出唐诗宋词

    有趣的Linux命令行:随机输出唐诗宋词 fortune命令,随机输出一句话,或者是一句英文名言,或者是一首唐诗宋词来,如果没有唐诗宋词,那就需要用fortune-zh bkjia@bkjia:~$ ...

  4. java实现随机输出26个小写字母

    java实现随机输出26个小写字母 方法:在'a'加随机偏移量,随机偏移量用Math类的random方法实现 package com.word.word; //随机输出26个英文字母 public c ...

  5. shell随机输出一个人或多个人的学号及姓名

    随机输出3个人的学号及姓名 随机输出1个人的学好及姓名 输出结果: 输出结果: 转载于:https://www.cnblogs.com/HeyJude/p/6195270.html

  6. java代码--------随机输出100个随机数,要求每行10个数

    总结:不敢爱你么开口 package com.sads;///实现随机输出100个数字,数字是0到9之间,每行输出10个 public class Wss {public static void ma ...

  7. Java生成随机数并随机输出不重复的值

    一个小Demo,网上有很多类似的代码,测试了一下网上的代码为了让随机输出值不重复,重复循环达到目的的效果,但循环次数过多严重影响性能. 通过ArrayList的remove方法实现了生成随机数并随机输 ...

  8. php随机名人名言,php随机输出名人名言的函数

    使用php随机输出名人名言,每刷新一次就会随机出现一条语句,如果改作新年的祝福放在一起,也是这样展示给用户,是不是很温馨哦. 实现方法很简单,只需要一个字符串变量,这里面放所有要随机展现的名人名言,然 ...

  9. PHP程序随机输出一些字符串内容,已集成方法可直接使用

    在博客中会用到一些随机显示的内容(字符串),将每1条内容按行切分,再随机显示一组,代码如下: /*** PHP程序随机输出一些内容,名言什么的* @return $poems* @Time 2018. ...

  10. 5.2 IO流(File类,Propertis配置文件,其他类(打印流,序列流,操作对象的流(序列化接口),随机访问文件的流,管道流,操作基本数据的流,操作数组的流,操作字符串的流),编码表)

    1.File类 IO流的流对象只能操作设备上的数据.File类:1.用来将文件或者文件夹(也称目录)封装成对象. 2.方便对文件和文件夹的属性信息进行操作.(操作文件夹,文件的属性(创建时间,修改时间 ...

最新文章

  1. logging 模块记录日志
  2. python报错TabError: inconsistent use of tabs and spaces in indentation解决方案
  3. 新建文件夹html文件,JS实现新建文件夹功能
  4. 2017年10月08日普及组 世界语
  5. 【C语言】C语言实现面向对象编程之继承
  6. 【转】LCS和LCS服务器应用程序概述
  7. LG下月将用新品牌发布5G手机:比三星Galaxy S20更便宜
  8. 用触发器实现表的同步操作
  9. CF 55D Beautiful numbers 数位DP
  10. 55.模拟撕衣服游戏编辑图片
  11. 原来这些手机技巧这么好用!以前还不知道,今天领教了
  12. 链家网爬取深圳租房信息并存入MySQL
  13. 清华学霸尹成Python教程
  14. adobe服务器无响应,链接不到adobe服务器
  15. 微信小程序开发账号找回
  16. 优秀的论文答辩PPT模板值得被应用
  17. Denoising point sets via L0 minimization
  18. 一位月薪1.2w的北漂程序员真实生活!
  19. QT 与日置、安捷伦测试仪 通讯 232串口 GPIB
  20. 2021-08-07 解决安装MacTeX后界面显示法语问题

热门文章

  1. Exchange2003 备份与还原
  2. Yii集成PHPWord
  3. vue+elementui搭建后台管理界面(6登录和菜单权限控制)
  4. restfulframework详解
  5. 01_6_SERVLET如何从上一个页面取得参数
  6. F.Studio 远程备份系统
  7. 190727每日一句
  8. 190507每日一句
  9. unity用代码生成的物体或line renderer让其在确定的某一个层里面的方法
  10. origin 复制与数据转置