一个txt文件有多少行?
我想将任意txt文件的行读取到字符串数组中。但我不想使用Redim保留,也不想打开文件两次:一次用于计数行数,然后在使用其索引的行数声明字符串数组后再次打开,以便将文本行读取到该数组中。应该有一个“清洁”方法。我的问题:是否有返回行数的标准函数?
**** Hidden Message ***** 以前从没见过劈叉。事实上,这个解决方案需要最少的编码。谢谢!
虽然我很欣赏它的简洁,但这并不是最少的代码,但是性能非常好——即使是在非常大的文件上。
对一个包含64,000行文本(每行128个字符)的文本文件的快速测试几乎是即时的。
就像我说的,我个人很有兴趣看到一个性能优于它的vba替代方案。
这是我的2美分,部分是从MP
Option Explicit
Sub test()
Dim streams() As String
''please use a valid path in the following
''btw size of localldd.txt is 45.6 Mb
''you can get this file from:
''http://www.gomr.mms.gov/homepg/pubinfo/freeasci/pipeline/freepipe.html
streams = FileToArray("D:\VBA_TEST\localldd.txt")
Debug.Print (UBound(streams) - LBound(streams)) + 1; "line(s) of text retrieved."
End Sub
Function FileToArray(fName As String) As String()
Dim txt As String
Dim fs As Object
Dim fl As Object
Set fs = CreateObject("Scripting.FileSystemObject")
Set fl = fs.OpenTextFile(fName)
txt = fl.ReadAll
fl.Close
FileToArray = Split(txt, vbCr)
End Function
~'J'~ 干杯~
嘿伙计们
这真的很酷!
我知道这显然是必要的,否则就不会提出这个问题,但我想知道我该如何阐述这个问题?谢谢马克
哦,胖子,还有,为什么是+1?
标记 连我都可以回答
假设,你声明了一个数组MyArray (0到4)。那么LBound = 0,UBound = 4。
显然,4 - 0 = 4。然而,该数组可以保存5个值(索引范围= 0 1 2 3 4)。
因此出现了“+ 1”。
很高兴能为您服务
我提问的原因是为了获得最高速度。所以我希望最小的内存/值重新分配(Redim Preserve)和/或硬盘活动(打开/读取一个文件两次)。
页:
[1]