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