我用“Open sfname For Input As #1”打开文本文件然后进行逐行处理,但是我的文件太大,300M,每次都要把文件全部读进来后才处理,这样的方式每次都死机,请问是不是可以用其它方式打开文件。fs = CreateObject("scripting.filesystemobject")这种方式可以嘛?我在msdn上没有看到关于这种方式的判断文件结束的函数,比如eof之类的。大家给一点建议,谢谢了。
逐行读入,然后进行切分,切分后再写入到一个新的文本文件中,其实很简单,我也知道使用filesystemobject就可以进行,但是就是没有找到如何判断读到文件结束的标志,我也想到了个非常荒谬的办法,就是只要出错就结束,但是这个好像不是解决的问题的最优选择了,所以问问大家,如何判断文件结束,前提是使用opentextfile,而不是使用open as #1这种样式!
Dim strTmp As String Dim strResult As StringOpen "InputFile" For Input As #1 Open "OutputFile" For Output As #2 Do Until EOF(1) Line Input #1,strTmp '处理代码····· Print #2,strResult'将处理结果存入文件 Doevents Loop Close #1 Close #2
eof函数在filesystemobject对象上如何使用?
Dim strResult As StringOpen "InputFile" For Input As #1
Open "OutputFile" For Output As #2
Do Until EOF(1)
Line Input #1,strTmp
'处理代码·····
Print #2,strResult'将处理结果存入文件
Doevents
Loop
Close #1
Close #2
我经常处理大数据量的文本比如航空影像中用的DEM格式的文件,大的有几百M
通常我用二进制的方式一次性读入内存,速度极快
然后我把回车换行符作为分隔符,使用split函数把内存中的大字符串分隔为数组
再循环处理数组中的元素,每个下标元素即为一行,顺序也是一致的
速度还可以,但是处理时一定要使用进度条标志处理过程,不然肯定以为是死机了
数据量还是太大