[已解决]如何提高Filewritline效率
本帖最后由 user11 于 2012-8-29 19:41 编辑想自己写一个手机号码生成工具,可以生成一个城市的所有手机号码,
首先从网站读取该城市的所有号码段到一个文本里面,然后再号码段(前7位)后面补足4位就可以变成 11位的手机号码
补足11位号码以后,使用Filewriteline写入到新的文件里面,,可是Filewriteline的速度实在太慢了,求助各位高手,,如何提高效率加快速度,非常感谢!!
主要的代码如下,,每个城市的号码段数码不同,有的非常多例如北京上海,一行一个号码段前七位,我从下面网站抓的
http://www.aiqzu.net/city/beijing/beijing.php
$sjfile = FileOpen($file, 0);;$file为已经读取的号码段文件
If $sjfile = -1 Then
MsgBox(0, "错误", "号码段文件不能打开.")
Else
$zdfile = FileOpen("_11位手机号码.txt", 10)
For $r=1 To $i Step 1 ;;;$i前面已经读取文本的最大行数
If $zdfile = -1 Then ExitLoop
$zdline = FileReadLine($sjfile,$r)
If @error = -1 Then ExitLoop
For $j=0 To 9999 Step 1
If StringLen(String($j))<4 Then
$4nums=StringRight("00000000",4-StringLen(String($j)))&String($j) ;;补足四位号码,方法比较笨汗
Else
$4nums=String($j)
EndIf
FileWriteLine($zdfile,$zdline&$4nums)
Next
Next
MsgBox(0,"恭喜任务完成","共计生成"&($r-1)*10000&"个,11位手机号码!")
EndIf
手机看帖,不方便,你可以先将生成的数据写到变量里,完成后再一起写到文件 2楼思路对头, $zdline = FileReadLine($sjfile,$r) 改成 $data &= $r & @CRLF
$data 变量获取所有或一定行数据后, 再写入文件 本帖最后由 gto250 于 2012-8-28 22:12 编辑
#Include <File.au3>
$t=TimerInit()
Dim $str,$aArray
For $i=0 To 9999
$str&="*"&StringFormat("%04d\n",$i)
Next
_FileReadToArray(@ScriptDir&"\号码.txt",$aArray)
$f=FileOpen(@ScriptDir&"\11位号码.txt",10)
For $i= 1 To $aArray
FileWrite($f,StringReplace($str,"*",$aArray[$i]))
Next
$l=TimerDiff($t)
MsgBox(0,"","已经完成,用时"&Int($l/1000)&"秒,一共"&$aArray*10000&"个号码")
号码.txt里的内容,如下,联通的317个号码
1300000
1300010
1300011
1300045
1300046
1300047
1300048
1300049
1300100
1300101
1300102
1300103
1300104
1300105
1300106
1300107
1300108
1300109
1300110
1300111
1300112
1300113
1300114
在我的电脑上,一共317行的7位号码,生成3170000个号码,一共4秒!
想要更快的方法,可能就要P版的内嵌汇编了,不过那个我不会! 回复 4# gto250
非常感谢,,解决了。。学到不少东西!!{:face (125):}
页:
[1]