VB如何读取大的文本文件
我有一个大的文本文件,现在要对它读取并处理。但是我遇到这样一个问题:我单把读取文件的代码拿出来,做试验使用PrivateSubCommand1_Click()DimiAs...
我有一个大的文本文件,现在要对它读取并处理。
但是我遇到这样一个问题:
我单把读取文件的代码拿出来,做试验使用
Private Sub Command1_Click()
Dim i As Integer
i = 0
Dim linestr As String
Print "开始读取文件。。。"
Open FilePath1 For Input As #1
Print "打开成功"
Do While i < 2
Line Input #1, linestr
i = i + 1
Loop
Print "ok"
End Sub
运行这个东西,就会显示“开始读取文件。。。。” 然后就没反应了。
卡住了,等了半个小时都没有用。
但是
我将代码删点东西 不运行line input
Private Sub Command1_Click()
Dim i As Integer
i = 0
Dim linestr As String
Print "开始读取文件。。。"
Open FilePath1 For Input As #1
Print "打开成功"
End Sub
就会显示“开始读取文件。。。。” “打开成功” 。程序运行成功了。
请问问大家这个怎么办,我代码都写好了,就是没考虑到文件居然这么大,现在别说我代码处理部分了,读取都困难。
请大家帮我想一想,有没有方法让他一部分后停下来,让我的LINE INPUT运行一下 然后再读一部分。
或者直接将他写入内存 我内存很大,总之提高读取速度就是了,大家帮帮忙啊。
兄弟 不行啊 加上DoEvents 照样挂了
呵呵 我的文件大的吓人 700多MB,但是文件中已经分行了,一行就10几个字符,所以我要按行读处理。
wqlk1:
你的答案很不错,从你的程序中我收到不少启发,不过还有些不太明白,有QQ吗 展开
但是我遇到这样一个问题:
我单把读取文件的代码拿出来,做试验使用
Private Sub Command1_Click()
Dim i As Integer
i = 0
Dim linestr As String
Print "开始读取文件。。。"
Open FilePath1 For Input As #1
Print "打开成功"
Do While i < 2
Line Input #1, linestr
i = i + 1
Loop
Print "ok"
End Sub
运行这个东西,就会显示“开始读取文件。。。。” 然后就没反应了。
卡住了,等了半个小时都没有用。
但是
我将代码删点东西 不运行line input
Private Sub Command1_Click()
Dim i As Integer
i = 0
Dim linestr As String
Print "开始读取文件。。。"
Open FilePath1 For Input As #1
Print "打开成功"
End Sub
就会显示“开始读取文件。。。。” “打开成功” 。程序运行成功了。
请问问大家这个怎么办,我代码都写好了,就是没考虑到文件居然这么大,现在别说我代码处理部分了,读取都困难。
请大家帮我想一想,有没有方法让他一部分后停下来,让我的LINE INPUT运行一下 然后再读一部分。
或者直接将他写入内存 我内存很大,总之提高读取速度就是了,大家帮帮忙啊。
兄弟 不行啊 加上DoEvents 照样挂了
呵呵 我的文件大的吓人 700多MB,但是文件中已经分行了,一行就10几个字符,所以我要按行读处理。
wqlk1:
你的答案很不错,从你的程序中我收到不少启发,不过还有些不太明白,有QQ吗 展开
10个回答
展开全部
用文件系统对象读取,FileSystemObject. 下面的例子是是我把一个文件里的所有字符读入到一个String变量里,希望对你有启发:
Dim fso As New FileSystemObject, fil As File, ts As TextStream
Dim strSend As String
strSend = ""
Set fil = fso.GetFile(App.Path & "\file\JCI._EXH.TXT")
Set ts = fil.OpenAsTextStream(ForReading, -2)
strSend = ts.ReadAll
Set fil = Nothing
Set ts = Nothing
此时变量 strSend里储存了JCI._EXH.TXT文本里所有的内容.并且速度很快.
Dim fso As New FileSystemObject, fil As File, ts As TextStream
Dim strSend As String
strSend = ""
Set fil = fso.GetFile(App.Path & "\file\JCI._EXH.TXT")
Set ts = fil.OpenAsTextStream(ForReading, -2)
strSend = ts.ReadAll
Set fil = Nothing
Set ts = Nothing
此时变量 strSend里储存了JCI._EXH.TXT文本里所有的内容.并且速度很快.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道你的文件多大,我是用一部小说测试的,3M多一点,读到一个string变量里只是一眨眼的工夫,绝对不到一秒钟
Private Sub Form_Load()
Dim allstr$
Debug.Print "开读"
ReadFrom "e:\生肖守护神.txt", allstr
Debug.Print "读完"
End Sub
Sub ReadFrom(FileName$, TXT$)
Dim fn&: fn = FreeFile
Open FileName For Input As #fn
TXT = StrConv(InputB$(LOF(fn), fn), vbUnicode)
Close #fn
End Sub
Private Sub Form_Load()
Dim allstr$
Debug.Print "开读"
ReadFrom "e:\生肖守护神.txt", allstr
Debug.Print "读完"
End Sub
Sub ReadFrom(FileName$, TXT$)
Dim fn&: fn = FreeFile
Open FileName For Input As #fn
TXT = StrConv(InputB$(LOF(fn), fn), vbUnicode)
Close #fn
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能不能说明一下,你的文件有多大?是不是一行就得近几M,十几M
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂了,
Do While i < 2
Line Input #1, linestr
i = i + 1
Loop
应该只是读了两行数据的啊,怎么会挂了呢?
Do While i < 2
Line Input #1, linestr
i = i + 1
Loop
应该只是读了两行数据的啊,怎么会挂了呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一行一行读很慢的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询