Cn.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=F:\;Extensions=asc,csv,tab,txt;" Cn.Open Dim Rst As New ADODB.Recordset Dim Sql As String Sql = "select * from TEST.txt" Rst.CursorLocation = adUseClient Rst.Open Sql, Cn, adOpenStatic, adLockPessimistic 行數=rst.RecordCount+1
自己可以去優化一下SQL語句 如:select count(*) as rows from text.txt
哦天呢, 你可以通过OPEN语句打开文件,然后用行读的办法读一下,并且在其中设置一个变量来计算读了多少行也就是类似下面代码Option ExplicitPrivate Sub Form_Load() Dim hT1 As Integer, hCount As Integer, hFreeNumber As Integer Dim tmp As String hFreeNumber = FreeFile Open "c:\BOOT.INI" For Input As #hFreeNumber While Not EOF(hFreeNumber) Line Input #hFreeNumber, tmp hCount = hCount + 1 If tmp = "" Then hCount = hCount - 1 Wend Close #hFreeNumber MsgBox hCount End Sub
最快的方法来了Dim lngLineCount As Long'行数 Dim strFileName As String'文件路径 lngLineCount = 1 strFileName = "C:\test.txt"'缓冲区长度,最佳值根据不同的系统来定 '应该是4096的倍数 Dim lngBufferSize As Long lngBufferSize = 262144ReDim abytBuffer(lngBufferSize - 1) As Byte Dim lngRemain As Long, i As Long Open strFileName For Binary Access Read As #1 lngRemain = LOF(1) While lngRemain > 0 If lngRemain < lngBufferSize Then lngBufferSize = lngRemain ReDim abytBuffer(lngBufferSize - 1) End If Get #1, , abytBuffer lngRemain = lngRemain - lngBufferSize For i = 0 To lngBufferSize - 1 If abytBuffer(i) = 13 Then lngLineCount = lngLineCount + 1 Next Wend Close #1 Erase abytBufferMsgbox "行数是" & lngLineCount
Cn.Open
Dim Rst As New ADODB.Recordset
Dim Sql As String
Sql = "select * from TEST.txt"
Rst.CursorLocation = adUseClient
Rst.Open Sql, Cn, adOpenStatic, adLockPessimistic
行數=rst.RecordCount+1
如:select count(*) as rows from text.txt
你可以通过OPEN语句打开文件,然后用行读的办法读一下,并且在其中设置一个变量来计算读了多少行也就是类似下面代码Option ExplicitPrivate Sub Form_Load()
Dim hT1 As Integer, hCount As Integer, hFreeNumber As Integer
Dim tmp As String
hFreeNumber = FreeFile
Open "c:\BOOT.INI" For Input As #hFreeNumber
While Not EOF(hFreeNumber)
Line Input #hFreeNumber, tmp
hCount = hCount + 1
If tmp = "" Then hCount = hCount - 1
Wend
Close #hFreeNumber
MsgBox hCount
End Sub
Dim strFileName As String'文件路径
lngLineCount = 1
strFileName = "C:\test.txt"'缓冲区长度,最佳值根据不同的系统来定
'应该是4096的倍数
Dim lngBufferSize As Long
lngBufferSize = 262144ReDim abytBuffer(lngBufferSize - 1) As Byte
Dim lngRemain As Long, i As Long
Open strFileName For Binary Access Read As #1
lngRemain = LOF(1)
While lngRemain > 0
If lngRemain < lngBufferSize Then
lngBufferSize = lngRemain
ReDim abytBuffer(lngBufferSize - 1)
End If
Get #1, , abytBuffer
lngRemain = lngRemain - lngBufferSize
For i = 0 To lngBufferSize - 1
If abytBuffer(i) = 13 Then lngLineCount = lngLineCount + 1
Next
Wend
Close #1
Erase abytBufferMsgbox "行数是" & lngLineCount
Dim strTmp As String, arrTmp As Variant
Open "D:\临时目录\新建 文本文档.txt" For Input As #1
strTmp = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close #1
arrTmp = Split(strTmp, vbCrLf)
MsgBox "文件行数:" & UBound(arrTmp)
End Sub
╭═══════════════════╮
║ 免费的源码、工具网站,欢迎大家访问!║
║ http://www.j2soft.cn/ ║
╰═══════════════════╯
详见
http://community.csdn.net/Expert/topic/4825/4825949.xml
比如CPU速度、内存速度、磁盘访问速度以及缓冲区的大小,
测试文件是否有很多很短的行组成等等不知道FSO内部是怎么实现的~
缓冲区的大小,以及VB语言实现的问题吧?