找回密码
 加入
搜索
查看: 4356|回复: 6

[系统综合] 关于fileread读取文本文件内容不全是什么原因?

  [复制链接]
发表于 2010-12-28 15:45:54 | 显示全部楼层 |阅读模式
本帖最后由 ahphsautoit 于 2010-12-28 15:51 编辑

用fileread命令读取一个文本文件(通常大小为几百K至几M),经常发生读取的内容尾部丢失部分数据,偶尔发生数据中段有部分数据丢失,同时丢失部分修改为一小段乱七八糟的代码的情况,请问是怎么回事?
$1=FileOpen('文本.txt')
$2=FileRead($1)
FileClose($1)
当文本文件大至几百K以上时,经常发生读取后的$2内容与文本文件原始内容不符的现象。
发表于 2010-12-28 16:56:15 | 显示全部楼层
是不是过程有整理内存的动作引起的
 楼主| 发表于 2010-12-28 17:06:15 | 显示全部楼层
回复 2# _ddqs.


    采用读取全部内容的方式读取时间都是一瞬间就完成了,况且我没有主动整理内存。只能说是可能有关吧。对于数据尾部丢失的问题,我目前暂时的解决方法是:在读取前,先往该文本文件中续写至少500行以上的行,这样读取的结果就是丢失我续写上去的部分行,而相对地保全原有的内容。所以我才奇怪这问题的原因,似乎并不是数据量过大的问题。
发表于 2010-12-28 17:44:27 | 显示全部楼层
在进行分次读取时,ReadFile函数确实有这么一个BUG,缓存区边界检查BUG。解决方法是用映射的方式一次性读取文件到内存中。
CreatFileMapping
MapViewOfFile
 楼主| 发表于 2010-12-28 19:09:20 | 显示全部楼层
回复 4# pusofalse

哦,确认不是我的语法存在问题就是了。目前还是维持我采用的那种变通方式来处理的。Pusofalse给的方法正在学习中.l...
发表于 2010-12-29 00:01:51 | 显示全部楼层
在进行分次读取时,ReadFile函数确实有这么一个BUG,缓存区边界检查BUG。解决方法是用映射的方式一次性读取 ...
pusofalse 发表于 2010-12-28 17:44

哦,还有这个BUG?
从来没有发现,也放是我比较喜欢读入数组的关系?
从来没试过映射到内存中,马上试试。
发表下感叹,经常从P大的字里行间学到新的东西。--虽然经常还要GOOGLE下P大的关键字。
 楼主| 发表于 2010-12-29 08:17:11 | 显示全部楼层
哦,还有这个BUG?
从来没有发现,也放是我比较喜欢读入数组的关系?
从来没试过映射到内存中,马上试试 ...
3mile 发表于 2010-12-29 00:01


如果是类似于INI格式的文本,读入数组似乎没有问题。我处理的是几百万字的小说,能读入数组么?我转不过弯来啊,幸好前边不是树,哈哈哈!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-21 14:35 , Processed in 0.097609 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表