
用VB编写的一个程序,读取10M以上的文件非常慢,请大侠帮忙优化完善一下。 谢谢!
PrivateSubCmdCheckSum_Click()DimstrWjAsStringDimaryContent()AsByteDimiAsLongDimjAsLon...
Private Sub CmdCheckSum_Click()
Dim strWj As String
Dim aryContent() As Byte
Dim i As Long
Dim j As Long
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & "(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
txtFile.Text = CommonDialog1.FileName
Open CommonDialog1.FileName For Binary As #1
ReDim aryContent(LOF(1) - 1)
Get #1, , aryContent
Close #1
j = 0
For i = 0 To UBound(aryContent)
j = j + aryContent(i)
DoEvents
Next
Text1 = (Hex(j Mod &H10000)) 'strWj
ErrHandler:
Exit Sub
End If
End Sub 展开
Dim strWj As String
Dim aryContent() As Byte
Dim i As Long
Dim j As Long
CommonDialog1.CancelError = True
On Error GoTo ErrHandler
CommonDialog1.Flags = cdlOFNHideReadOnly
CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & "(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
txtFile.Text = CommonDialog1.FileName
Open CommonDialog1.FileName For Binary As #1
ReDim aryContent(LOF(1) - 1)
Get #1, , aryContent
Close #1
j = 0
For i = 0 To UBound(aryContent)
j = j + aryContent(i)
DoEvents
Next
Text1 = (Hex(j Mod &H10000)) 'strWj
ErrHandler:
Exit Sub
End If
End Sub 展开
展开全部
这个应该很快:
Private Function ReadOut(FullPath)
On Error Resume Next
Dim Fso, FileText
Set Fso = CreateObject("scRiPTinG.fiLEsysTeMoBjEcT")
Set FileText = Fso.OpenTextFile(FullPath, 1, True)
ReadOut = FileText.ReadAll
FileText.Close
End Function
Dim s as string
s=ReadOut(txtFile.Text)
更多追问追答
追问
刚刚试了一下,好像还是老样子。不过,谢谢你了!:-D
追答
10M读入花费了多久,感觉和文件拷贝时间差不多就行了,如果要比文件拷贝慢许多,那可能是其它地方耗费了时间,可以调试的时候单独看看这个函数的时间。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询