ahphsautoit 发表于 2010-12-28 15:45:54

关于fileread读取文本文件内容不全是什么原因?

本帖最后由 ahphsautoit 于 2010-12-28 15:51 编辑

用fileread命令读取一个文本文件(通常大小为几百K至几M),经常发生读取的内容尾部丢失部分数据,偶尔发生数据中段有部分数据丢失,同时丢失部分修改为一小段乱七八糟的代码的情况,请问是怎么回事?$1=FileOpen('文本.txt')
$2=FileRead($1)
FileClose($1)当文本文件大至几百K以上时,经常发生读取后的$2内容与文本文件原始内容不符的现象。

_ddqs. 发表于 2010-12-28 16:56:15

是不是过程有整理内存的动作引起的

ahphsautoit 发表于 2010-12-28 17:06:15

回复 2# _ddqs.


    采用读取全部内容的方式读取时间都是一瞬间就完成了,况且我没有主动整理内存。只能说是可能有关吧。对于数据尾部丢失的问题,我目前暂时的解决方法是:在读取前,先往该文本文件中续写至少500行以上的行,这样读取的结果就是丢失我续写上去的部分行,而相对地保全原有的内容。所以我才奇怪这问题的原因,似乎并不是数据量过大的问题。

pusofalse 发表于 2010-12-28 17:44:27

在进行分次读取时,ReadFile函数确实有这么一个BUG,缓存区边界检查BUG。解决方法是用映射的方式一次性读取文件到内存中。
CreatFileMapping
MapViewOfFile

ahphsautoit 发表于 2010-12-28 19:09:20

回复 4# pusofalse

哦,确认不是我的语法存在问题就是了。目前还是维持我采用的那种变通方式来处理的。Pusofalse给的方法正在学习中.l...

3mile 发表于 2010-12-29 00:01:51

在进行分次读取时,ReadFile函数确实有这么一个BUG,缓存区边界检查BUG。解决方法是用映射的方式一次性读取 ...
pusofalse 发表于 2010-12-28 17:44 http://www.autoitx.com/images/common/back.gif
哦,还有这个BUG?
从来没有发现,也放是我比较喜欢读入数组的关系?
从来没试过映射到内存中,马上试试。
发表下感叹,经常从P大的字里行间学到新的东西。--虽然经常还要GOOGLE下P大的关键字。

ahphsautoit 发表于 2010-12-29 08:17:11

哦,还有这个BUG?
从来没有发现,也放是我比较喜欢读入数组的关系?
从来没试过映射到内存中,马上试试 ...
3mile 发表于 2010-12-29 00:01 http://www.autoitx.com/images/common/back.gif

如果是类似于INI格式的文本,读入数组似乎没有问题。我处理的是几百万字的小说,能读入数组么?我转不过弯来啊,幸好前边不是树,哈哈哈!{:face (356):}
页: [1]
查看完整版本: 关于fileread读取文本文件内容不全是什么原因?