我想将二进制文件的前n个字节(例如100000)中的所有字母和数字的ascii代码加载到数组中。我写了这段代码:
Option Explicit
Dim i, lCharCount, lFileByte, lFileArray(99999)
Dim oFSO, oStream, sInFileName
'Validate input command line
If WScript.Arguments.Count < 1 Then
MsgBox "No input file has been specified!", vbExclamation, "My Script"
WScript.Quit
End If
sInFileName = WScript.Arguments(0)
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oStream = oFSO.OpenTextFile(sInFileName, 1)
Do While Not oStream.AtEndOfStream
lFileByte = Asc(oStream.Read(1))
If (lFileByte > 47 And lFileByte < 58) Or (lFileByte > 64 And lFileByte < 91) Or (lFileByte > 96 And lFileByte < 123) Then
lFileArray(lCharCount) = lFileByte
lCharCount = lCharCount + 1
If lCharCount = 100000 Then Exit Do
End If
Loop
oStream.Close: Set oStream = Nothing
但我需要它跑得更快。我宁愿不使用ADODB但是,如果使用FSO无法加速,我会对所有建议持开放态度。有什么想法吗?
答案 0 :(得分:1)
尝试这样的事情:
cnt = 100000
data = oFSO.OpenTextFile(sInFileName).Read(cnt)
ReDim lFileArray(Len(data)-1)
For i = 1 To Len(data)
lFileArray(i-1) = Asc(Mid(data, i, 1))
Next
答案 1 :(得分:0)
尝试在您的文件上调用ReadAll而不是char的char。这将读取整个文件并将其作为字符串返回。然后使用相同的循环,但这次使用字符串扫描方法返回返回的字符串。