当你准确知道要移动光标的位置(或多少字节)时, fseek文件中的指针才有用。 当您只想跳过一些已知长度的记录时,它对二进制文件非常有用。 但是在文本文件中它比任何东西都更危险和混乱( 除非你绝对确定每一行的大小相同,并且该行上的每个元素都在同一个确切的位置/列,但这不会经常发生 )。

有几种方法可以逐块读取文本文件:

1)使用HeaderLines选项

为了简单地跳过行的块上的文本文件,你可以使用HeaderLines的参数textscan ,因此,例如:

readFormat = '%f %f %f %f %f %f %f' ; %// read format specifier

nLines = 10000 ; %// number of line to read per block

fileInfo = dir(fileName);

%// read FIRST block

fid = fileopen(fileName);

M = textscan(fid, readFormat, nLines,'Delimiter',' '); %// read the first 10000 lines

fclose(fid)

%// Now do something with your "M" data

然后当你想要读取第二个块时:

%// later read the SECOND block:

fid = fileopen(fileName);

M = textscan(fid, readFormat, nLines,'Delimiter',' ','HeaderLines', nLines); %// read lines 10001 to 20000

fclose(fid)

如果你有很多块,对于第Nth块,只需适应:

%// and then for the Nth BLOCK block:

fid = fileopen(fileName);

M = textscan(fid, readFormat, nLines,'Delimiter',' ','HeaderLines', (N-1)*nLines);

fclose(fid)

如果需要(如果你有很多块),只需在循环中编写最后一个版本。

请注意,如果在每个块读取后关闭文件,这是很好的(因此当您再次打开文件时,文件指针将从文件的开头开始)。 如果您的处理可能需要很长时间或者可能出错,那么在读取数据块后关闭文件会更安全(如果崩溃,您不希望文件保持打开太长或松散fid )。

2)逐块读取(不关闭文件)

如果块的处理足够快速和安全,所以你确定它不会爆炸,你可以负担得起不关闭文件。 在这种情况下, textscan文件指针将停留在您停止的位置,因此您还可以:

读取一个块(不要关闭文件): M = textscan(fid, readFormat, nLines)

处理它然后保存你的结果(和释放内存)

使用相同的调用读取下一个块: M = textscan(fid, readFormat, nLines)

在这种情况下,您不需要headerlines参数,因为textscan将继续读取它停止的确切位置。

3)使用ftell和fseek

最后,你可以使用fseek开始在你想要的精确位置读取文件,但在这种情况下,我建议将它与ftell结合使用。

ftell将在打开的文件中返回当前位置,因此使用它来知道您最后停止读取的位置,然后在下一次使用fseek直接在此位置。 就像是:

%// read FIRST block

fid = fileopen(fileName);

M = textscan(fid, readFormat, nLines,'Delimiter',' ');

lastPosition = ftell(fid) ;

fclose(fid)

%// do some stuff

%// then read another block:

fid = fileopen(fileName);

fseek( fid , 'bof' , lastPosition ) ;

M = textscan(fid, readFormat, nLines,'Delimiter',' ');

lastPosition = ftell(fid) ;

fclose(fid)

%// and so on ...

matlab textscan溢出,matlab - Textscan存档有大量的行 - 堆栈内存溢出相关推荐

  1. matlab mle pci为nan,matlab - 使用mle()估计自定义分布的参数 - 堆栈内存溢出

    我有以下代码,我希望估计自定义分布的参数. 然后使用估计的参数,我想看看估计的PDF是否类似于给定数据的分布(它应该与给定数据的分布相匹配). [编辑]:'x'现在包含数据样本而不是PDF 主要代码是 ...

  2. axis2 java客户端内存溢出怎么办_java - Axis2-总是出现404错误 - 堆栈内存溢出

    我试图将一些Web服务存根从Metro移到Axis2,但是在使用wsdl2java生成存根后,每次尝试进行服务调用时,我都会不断收到404错误. 16/12/2010 11:14:57 AM org. ...

  3. xampp mysql 内存溢出_php - SQLSTATE [HY000] [2002]连接被拒绝 - 堆栈内存溢出

    我通过将主机更改为localhost尝试了其他解决方案,但仍然没有帮助. 我正在尝试使用php artisan migrate连接MySQL,但出现以下异常: : SQLSTATE[HY000] [2 ...

  4. java jdbctemplate update_java - Spring JdbcTemplate.update()不更新行 - 堆栈内存溢出

    我在DAO中使用Spring JdbcDaoSupport ,并尝试使用以下查询更新记录. String callersUpdateQuery = "update W67U999S a se ...

  5. java内存溢出怎么排查_【转】Java学习---内存溢出的排查经历

    前言 OutOfMemoryError 问题相信很多朋友都遇到过,相对于常见的业务异常(数组越界.空指针等)来说这类问题是很难定位和解决的. 本文以最近碰到的一次线上内存溢出的定位.解决问题的方式展开 ...

  6. 导致溢出_1篇文章搞清楚8种JVM内存溢出(OOM)的原因和解决方法

    前言 撸Java的同学,多多少少会碰到内存溢出(OOM)的场景,但造成OOM的原因却是多种多样. 堆溢出 这种场景最为常见,报错信息: 原因 1.代码中可能存在大对象分配 2.可能存在内存泄露,导致在 ...

  7. 开两个服务内存溢出_应用服务OkHttpClient创建大量对外连接时内存溢出

    1 背景 最近工作中碰到一个生产问题,就是应用服务在使用 OkHttpClient 时,在创建大量对外连接时线程堆积导致内存溢出. 主要表现是在流量极低的情况下,即平均 qps 在 1-4 左右的情况 ...

  8. java 内存溢出分析_用一段时间后java内存溢出问题分析(转)

    几乎每个月都有出现因为内存溢出的问题,除了需要多分配内存外, 是不是要考虑对代码进行一些处理.. 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方. 1.尽量在合适的场合使用单例 使 ...

  9. java 测试内存溢出_浅析软件测试人员如何对JVM进行内存溢出检测

    一.什么是JVM,检测JVM的意义 JVM是java virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各 ...

  10. matlab编译错误怎么查找,matlab - Matlab mex文件编译错误-“未启用SSE2指令集” - 堆栈内存溢出...

    在Matlab中编译mex文件的工具箱时,出现以下错误: In file included from /home/josh/Desktop/Project/code/toolbox/channels/ ...

最新文章

  1. 表表达式,Substring, CharIndex, 多行数据变同一行的用法
  2. SourceTree 3.0.17如何跳过注册进行安装? — git图形化工具(一)
  3. hibernate annotations和hbm.xml配置文件在spring中的并存配置
  4. java string 异或_Java源码——String
  5. javaSE-多线程1
  6. Angular ngTemplateOutlet
  7. 运营商大数据的市场价值有哪些
  8. spark记录(6)SparkCore的调优之开发调优
  9. 数学建模分享part2--主成分分析(spss)
  10. 国际c语言混乱编码大赛,国际C语言混乱代码大赛(IOCCC)
  11. (18)全民小视频引流脚本模块化开发12-任务总数与时间间隔By飞云脚本学院
  12. docker应用篇(6):安装Uptime Kuma监控
  13. C语言修仙by百度云,国家让我去当猫txt下载,国家让我去当猫笔趣阁,国家让我去当猫燃文 - 格格党...
  14. python函数图像绘制、函数不固定_Python中函数图像快速绘制的方法
  15. fileReader学习-前端展示本地图片
  16. 美容院前台收银软件用什么好?
  17. windows 安装Ubuntu 子系统
  18. Makefile的常见错误信息
  19. Git内部原理之深入解析环境变量
  20. 毕业有感-抉择的重要性

热门文章

  1. 马科维茨投资组合理论总结
  2. 计算机网络毕业设计选题背景,毕业设计论文选题依据与背景
  3. Python 计算平方数
  4. 怎么算特征值和特征矩阵?
  5. prosody xmpp_如何在Ubuntu 18.04上安装Prosody
  6. windows下jenkins批处理执行git pull失败的原因
  7. MySQL中grant之后要跟着flush privileges吗?
  8. 每周全球科技十大新闻(2021.2.1-2.7)
  9. R费希尔精确检验(Fisher‘s exact test)
  10. 手动实现获取微信openid