本帖最后由 xymc 于 2020-4-18 00:22 编辑
"D:\客户机数据" 里面有几万个帐号.ini ,想读取ini里面的数据储存到数组里面,用for读完要差不多10分钟,有什么办法可以提高下效率
逛了会论坛发现原来是ReDim的问题,循环写入数组时,每增加一行数据用ReDim调整数组大小+1时出现的问题
如果预设数组大小为5w,读取完5w的ini文件只需要60s以内
现在知道是这个问题,但预设的数组毕竟是过大,真实有数据的可能没有5w,怎么删除数组里面空的内容呢?
-----------------------------------------------------------------------------------------------------------------------------------------
找到解决方案了,大概思路如下
预设数组大小为5w
ReDim $zhongduan[50000][7];调整一个已经存在的数组的大小
循环读取ini存入数组时加个计次
读取完所有ini后再用ReDim调整下数组大小就行,多少行数据就调整多大
-----------------------------------------------------------------------------------------------------------------------------------------
这里找到的答案
https://www.autoitx.com/forum.php?mod=viewthread&tid=71667&highlight=%CA%FD%D7%E9
Local $path = "D:\客户机数据"
Local $FileList = _FileListToArray($path)
If Not @error Then
;MsgBox(0,"所有的文件\文件夹数量",$FileList[0])
For $i = 1 To $FileList[0] Step 1
Local $ini_path = $path&$FileList[$i]&"\账号.ini","QQ");ini路径
If @error Then
MsgBox(4096, "", "错误, 读取INI文件失败.")
Else
For $ii = 1 To $var[0][0]
;MsgBox(4096, "", "关键字: " & $var[$ii][0] & @CRLF & "值: " & $var[$ii][1])
;读取到的数据存入数组
;........
Next
EndIf
Next
EndIf
|