vb 读取文件 读取特定行的文件
利用代码fso和textstream两个可以读取特定行的数据,但是对一个文件我需要多次读取,这些行数都存在一个数组a()中,该怎么做才能利用循环一次搞定呢,我只需要读取4...
利用代码fso和textstream两个可以读取特定行的数据,但是对一个文件我需要多次读取,这些行数都存在一个数组a()中,该怎么做才能利用循环一次搞定呢,我只需要读取400多行中的15行,在从行中去不同列数的数据;
另外这种读取特定行的方法与input# 语句读取然后split,最终分为2维数组,然后再去特定位置的数据,那个更好更快一些呢?
Dim FSO As New FileSystemObject
Dim TS As TextStream
Dim tmp As String
Dim temp() As String
If Dir("C:\Users\DELL\Desktop\11072503.000") <> "" Then
Set TS = FSO.OpenTextFile("C:\Users\DELL\Desktop\11072503.000", ForReading)
For i = 0 To UBound(LonPosition)
Do Until TS.Line = lonposition(i)
TS.SkipLine
Loop
tmp = TS.ReadLine
Print Str
Next i
Else
MsgBox "确认文件路径"
End If
这是读取代码,该怎么改能做成一个循环或者别的方法? 展开
另外这种读取特定行的方法与input# 语句读取然后split,最终分为2维数组,然后再去特定位置的数据,那个更好更快一些呢?
Dim FSO As New FileSystemObject
Dim TS As TextStream
Dim tmp As String
Dim temp() As String
If Dir("C:\Users\DELL\Desktop\11072503.000") <> "" Then
Set TS = FSO.OpenTextFile("C:\Users\DELL\Desktop\11072503.000", ForReading)
For i = 0 To UBound(LonPosition)
Do Until TS.Line = lonposition(i)
TS.SkipLine
Loop
tmp = TS.ReadLine
Print Str
Next i
Else
MsgBox "确认文件路径"
End If
这是读取代码,该怎么改能做成一个循环或者别的方法? 展开
2个回答
展开全部
看了代码,好像:
数组lonposition中存储着行数,是int类型
你要将lonposition指定行的内容,赋予tmp,但是最后打印的Str是从何而来?
以下是一次循环代码:
注意:
1.假设读取的文件是ansi编码
2.lonposition中存储着行数,是int类型
Dim FSO, waita, osh
Set FSO = CreateObject("Scripting.FileSystemObject")
Set osh = CreateObject("WScript.Shell")
myfile = "C:\Users\DELL\Desktop\11072503.000"
If FSO.FileExists(myfile) Then
'should replace string:readfile1 ,<format> ,True
Set readfile1 = FSO.OpenTextFile(myfile, 1, True, 0)
myallfiletemp = readfile1.ReadAll
readfile1.Close
myallfile_arr = Split(myallfiletemp, vbCrLf)
For Each t In LonPosition
'fcc = Split(t, ",")(0)
Str = myallfile_arr(CInt(t))
Print Str
Next
End If
展开全部
先定义全局数组变量,然后一次性把内容读到数组里,需要时直接从数组里取,用Split分割即可。
Dim temp() As String
Private Sub Form_Load()
Dim tmp As String
Dim Fname As String
Fname = "C:\Users\DELL\Desktop\11072503.000"
If Dir(Fname, vbNormal Or vbHidden Or vbSystem) = "" Then
MsgBox "确认文件路径"
Else
Dim i As Integer
i = 0
Open Fname For Input As #1
Do While Not EOF(1)
Line Input #1, tmp
ReDim Preserve temp(i + 1)
temp(i) = tmp
i = i + 1
Loop
Close #1
MsgBox "成功添加数组:" & Format(UBound(temp), "0") & "条", vbInformation, "提示"
End If
End Sub
需要时,直接读temp(N) N是第几条,当然使用前判断一下是不是超过最大数组数即可。
split(temp(N),"特定分割字符")(0)是分割的第一个数据
split(temp(N),"特定分割字符")(1)是分割的第二个数据......
这样一次读出后,直接可以调用第几行都没有问题了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询