Вот. Поймал глюк в большой программе для мобильного устройства, потом уменьшил её до того, что получилось.
Программу компилировал на двух машинах и под двумя версиями .NET — результат один и тот же: из одного и того же места файла программа читает разные байты. В настольной версии .NET ошибка не проявлятся.
Если при создании FileStream убрать размер буфера (4096 в моём примере), то работает нормально. Но почему не работает с ним?!
Imports System.IO
Module Module1
Sub Main()
Const MAX_BUFFER As Integer = 2048
Dim m_FileStream As FileStream = New FileStream("\Storage Card\file.txt", IO.FileMode.Open, IO.FileAccess.ReadWrite, IO.FileShare.None, 4096)
Dim m_Buffer(MAX_BUFFER - 1) As Byte
m_FileStream.ReadByte()
m_FileStream.Seek(2129, IO.SeekOrigin.Begin)
m_FileStream.Read(m_Buffer, 0, MAX_BUFFER)
m_FileStream.Seek(3107, SeekOrigin.Begin)
MsgBox(m_FileStream.Position & " " & Hex(m_FileStream.ReadByte()))
m_FileStream.Seek(3107, SeekOrigin.Begin)
MsgBox(m_FileStream.Position & " " & Hex(m_FileStream.ReadByte()))
End Sub
End Module
P. S. Файл можно взять любой, например, такой:
http://usa.rota.lv/misc/file.txt
Ответить
|