文本文件的7种读入方法
vb吧
全部回复
仅看楼主
level 4
601居士 楼主
Private Sub LoadTxtFile(fName As String, Index As Integer) '输入参数:1.文件名,2.读入方式
On Error GoTo 100
Dim St As String, Z As String, fLen As Long, i As Long, DAT() As Byte, fs, fi
Select Case Index
Case 0 '常见的方法,一行一行地读入
Open fName For Input As #1
Do Until EOF(1)
Line Input #1, Z
St = St & Z & vbCrLf
Loop
Close #1
Text1.Text = St
Case 1 '用FSO一行一行地读入,要预先知道行数
Set fs = CreateObject("Scripting.FileSystemObject")
Set fi = fs.opentextFile(fName, 1)
For i = 1 To 5 '假设有5行
St = St & fi.readline & vbCrLf
Next
fi.Close
Set fs = Nothing
Text1 = St
Case 2 '用FSO一次性地读入
Set fs = CreateObject("Scripting.FileSystemObject")
Set fi = fs.opentextFile(fName, 1, True)
St = fi.ReadAll
fi.Close
Set fs = Nothing
Text1 = St
Case 3 '先用InputB一次性地读入,但InputB读入的是Ansi格式,要用StrConv转成Unicode格式
Open fName For Input As #1
St = StrConv(InputB$(LOF(1), #1), vbUnicode)
Close #1
Text1 = St
Case 4 '二进制读入,一次性先读入到字节数组,经转换后再赋给Text1
fLen = FileLen(fName) - 1
ReDim DAT(fLen)
Open fName For Binary As #1
Get #1, , DAT
Close #1
Text1 = StrConv(DAT, vbUnicode)
Case 5 '二进制读入,一次性先读入到字串变量,再赋给Text1。此法易造成文末的多余空格
St = Space(FileLen(fName) - 1) '先将字串变量填入文件长度的空格,这一句是必须的
Open fName For Binary As #1
Get #1, , St
Close
Text1 = St
Case 6 '二进制读入,与第4个方法相同,但读入后以16进制数据形式显示
fLen = FileLen(fName) - 1
ReDim DAT(fLen)
Open fName For Binary As #1
Get #1, , DAT
Close
For i = 0 To fLen: St = St & Right("0" & Hex(DAT(i)), 2) & " ": Next
Text1 = St
End Select
100
End Sub
2021年12月24日 02点12分 1
level 11
[大拇指]
2021年12月24日 03点12分 2
level 15
第8种方法:用二进制方式(Binary)打开,用Input函数读入(不用InputB),自动完成转换,无需StrConv
Open fName For Binary As #1
St = Input$(LOF(1), #1)
Close #1
Text1 = St
2021年12月24日 03点12分 3
level 7
[真棒]
2021年12月24日 04点12分 4
吧务
level 14
还可以使用文件流方式读取,需要引用adodb
2021年12月24日 06点12分 5
这好像也是一种能让VB6识别UTF-8编码的方法(VB6本身并不支持UTF-8);话说上面的方法也没有考虑字符编码的问题,都是假定为ANSI编码的(直接显示编码的那种方法除外,这个并没有将编码转换成字符)
2021年12月24日 06点12分
level 7
无私
2021年12月24日 06点12分 6
level 11
学习一下。
2021年12月24日 06点12分 7
level 1
学习了
2021年12月24日 13点12分 8
level 8
学习了
2021年12月28日 08点12分 10
1