0
这个文件的工作方式是有一个空缓冲区,然后用户检查和然后一个字节,给你的用户名字母数,然后一个字节多少字节跳到下一个用户和一个字节为哪个用户文件用户保留其设置。在VB.NET中读取文件错误?
IF语句中usersm变量的循环设置整个文件流进行提取。然而,在几乎完全相同的代码中,else子句特别是else代码中的str.Read(xnl,0,usn-1)似乎正在读取文件的最开始部分,尽管文件流的位置被设置得更早,但任何人都知道这里发生了什么事?
这是VB2005
Private Sub readusersdata(ByVal userdatafile As String)
ListView1.BeginUpdate()
ListView1.Items.Clear()
Using snxl As IO.Stream = IO.File.Open(userdatafile, IO.FileMode.Open)
Using str As New IO.StreamReader(snxl)
str.BaseStream.Position = 4
Dim usersm As Integer = str.BaseStream.ReadByte()
Dim users As Integer = usersm
While users > 0
If usersm = users Then
Dim trailtouser As Integer = 0
str.BaseStream.Position = 6
Dim ust As Integer = str.BaseStream.ReadByte()
str.BaseStream.Position = 8
Dim snb(ust - 1) As Char
str.ReadBlock(snb, 0, ust)
Dim bst = New String(snb)
If usersm = 1 Then
str.BaseStream.Position = 16
Else
str.BaseStream.Position = 15
End If
cLVN(ListView1, bst, str.BaseStream.ReadByte)
str.BaseStream.Position = 8 + snb.Length
str.BaseStream.Position += str.BaseStream.ReadByte + 1
Else
Dim usn As Integer = str.BaseStream.ReadByte
str.BaseStream.Position += 2
Dim chrpos As Integer = str.BaseStream.Position
Dim xnl(usn - 1) As Char
str.Read(xnl, 0, usn - 1)
Dim skpbyte As Integer = str.BaseStream.ReadByte
str.BaseStream.Position += 3
Dim udata As Integer = str.BaseStream.ReadByte
End If
users -= 1
End While
End Using
End Using
ListView1.EndUpdate()
End Sub
它的asinine,如果你操纵streamreader下的流,它不跟上变化,这个作品谢谢你 – Jim 2009-05-27 09:13:52