怎样读文本文件最快?

wsheep 2004-07-30 01:17:40
我要处理几个大文本文件(6xM的CSV或LOG文件,50万行左右),想用TextStream.readline处理,但速度太慢,TextStream.readall又不知道怎么用,或者,那位大虾还有其它好方法,希望不吝赐教,谢谢大家先。
...全文
318 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainstormmaster 2004-08-05
  • 打赏
  • 举报
回复
//如果没有.ini文件,如何定义列的信息

你可以自己配置ini文件
2004kingbear 2004-08-05
  • 打赏
  • 举报
回复
如果没有.ini文件,如何定义列的信息
Mars.CN 2004-07-30
  • 打赏
  • 举报
回复
open
rainstormmaster 2004-07-30
  • 打赏
  • 举报
回复
//怎样以数据库的方式打开文本文件?

参考:
http://vbworld.sxnw.gov.cn/articles/database/vb19.htm
http://vbworld.sxnw.gov.cn/articles/database/vb20.htm
http://vbworld.sxnw.gov.cn/articles/database/vb21.htm

看看大致的原理,具体的程序建议用ADO实现,而不是用它给的例子
bluesky23 2004-07-30
  • 打赏
  • 举报
回复
UP
haohaohappy 2004-07-30
  • 打赏
  • 举报
回复
二进制
Open "c:\xxx.log" For output As #1
write
print
Close #1
zhuiguo 2004-07-30
  • 打赏
  • 举报
回复
这是最快的!用二进制方式!
给一个我的函数给你参考!

'00010.取文本文件的行数
Public Function GetTextFileLine(zzg_strFileName As String) As Long
On Error GoTo GetTextFileLine_Err
Dim tmpID As Integer
Dim tmpAllStr As String
Dim tmpStr() As String
Dim tmpLine As Long

tmpID = FreeFile
Open zzg_strFileName For Binary As #tmpID
tmpAllStr = Space(LOF(tmpID))
Get #tmpID, , tmpAllStr
Close #tmpID
tmpStr = Split(tmpAllStr, vbCrLf)
tmpLine = UBound(tmpStr) + 1
GetTextFileLine = tmpLine
Exit Function
GetTextFileLine_Err:
GetTextFileLine = 0
Exit Function
End Function
wsheep 2004-07-30
  • 打赏
  • 举报
回复
to: rainstormmaster(暴风雨 v2.0)
怎样以数据库的方式打开文本文件?
wsheep 2004-07-30
  • 打赏
  • 举报
回复
只是简单的文本处理,先一行一行放到数组里,然后对每行进行处理。
例如文本内容是这样:
aaa,bbb,ccc,ddd,eee
fff,ggg,hhh,iii,kkk
lll,mmm,nnn,ooo,ppp

读到数组str(3)中
str(1)="aaa,bbb,ccc,ddd,eee"
str(2)="fff,ggg,hhh,iii,kkk"
str(3)="lll,mmm,nnn,ooo,ppp"

然后对str处理
str(1)="eee,ddd,ccc,bbb,aaa"
str(2)="kkk,iii,hhh,ggg,fff"
str(3)="ppp,ooo,nnn,mmm,lll"

文本文件很大,我现在只需要知道,第一步(读文件到数组时)怎样读最快。

ryuginka 2004-07-30
  • 打赏
  • 举报
回复
同意楼上,但是要转换,顶
熊孩子开学喽 2004-07-30
  • 打赏
  • 举报
回复
使用二进制方法读取文本最快。
rainstormmaster 2004-07-30
  • 打赏
  • 举报
回复
读出到byte数组后,可以用split函数进行分割,得到各行数据

不过,如果,你的文件如果特别大的话,我建议你用数据库的方式打开文件
starsoulxp 2004-07-30
  • 打赏
  • 举报
回复
关注中……
northwolves 2004-07-30
  • 打赏
  • 举报
回复
对,我也想一次性读出后再处理,但怎么一次性读出啊?

Private Sub Command1_Click()
Dim mybyte() As Byte
Open "c:\xxx.log" For Binary As #1
ReDim LOF(1 To LOF(1))
Get #1, , mybyte
Close #1
End Sub
northwolves 2004-07-30
  • 打赏
  • 举报
回复
对,我也想一次性读出后再处理,但怎么一次性读出啊?

Private Sub Command1_Click()
Dim mybyte() As Byte
Open "c:\xxx.log" For Binary As #1
ReDim LOF(1 To LOF(1))
Get #1, , mybyte
Close #1
End Sub
zhoudinghan 2004-07-30
  • 打赏
  • 举报
回复
open #
northwolves 2004-07-30
  • 打赏
  • 举报
回复
做什么样的处理?
wsheep 2004-07-30
  • 打赏
  • 举报
回复
对,我也想一次性读出后再处理,但怎么一次性读出啊?
Fancly 2004-07-30
  • 打赏
  • 举报
回复
关注
rainstormmaster 2004-07-30
  • 打赏
  • 举报
回复
或者一次性读出到byte数组中

看你要实现什么了?
加载更多回复(1)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧