Чтение и запись двоичных (бинарных файлов).
Статьи / .NET / VB.NET / Файлы и каталоги. Создание, чтение, запись. /
Назад
Использование двоичного доступа имеет ряд преимуществ при выполнении некоторых задач. Например, это дает возможность хранить информацию в особом формате, например: .zip, .mpeg или .xls. Двоичный доступ и произвольный доступ схожи между собой, только при двоичном доступе не делается никаких предположений относительно типа данных или длины записи. Поскольку двоичный доступ не требует полей фиксированной длины, в файлах с этим типом доступа можно создавать поля переменной длины. Таким образом, двоичный доступ позволяет иметь дело с файлами меньшего размера, чем произвольный доступ, так как под каждое поле будет отводиться только минимально необходимое для него место.
Чтобы открыть файл для двоичного доступа, необходимо настроить OpenMode.Binary с помощью оператора FileOpen. После открытия файла для записи в нем можно использовать те же самые функции, что и с файлом, открытым для последовательного или произвольного доступа, например FilePut и FilePutObject. Для считывания из файла используются функции FileGet и FileGetObject. Дополнительных сведения см. в разделе Типы и функции доступа к файлам.
Примечание о безопасности: При считывании из файла, нельзя судить о его содержимом только по его расширению. Например, файл с именем Form1.vb исходным файлом Visual Basic .NET может и не являться.
В следующем примере используется функция FilePut для записи строки в файл, открытый для двоичного доступа. Предполагается, что в рабочем каталоге имеется файл test.txt.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As_
System.EventArgs) Handles Button1.Click
Dim MyString As String
Dim ReadString As String
Dim iFr As Short
iFr = FreeFile()
ReadString = CurDir() & "\test.txt"
FileOpen(iFr, ReadString, OpenMode.Binary)
MyString = "new information"
FilePut(MyString)
FileClose(iFr)
End Sub
В следующем примере используется функция FileGet для отображения первых 15 знаков, содержащихся в test.txt. Опять же данный пример предполагает, что файл test.txt существует.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As_
System.EventArgs) Handles Button1.Click
Dim MyString As String
Dim ReadString As String
Dim iFr As Short
iFr = FreeFile()
ReadString = CurDir() & "\test.txt"
FileOpen(iFr, ReadString, OpenMode.Binary)
MyString = New String(" ", 15)
FileGet(iFr, MyString)
FileClose(iFr)
MsgBox(MyString)
End Sub
Возможно, понадобится использовать информацию, взятую из файла, в коде. Следующий пример кода записывает содержимое текстового файла test.txt в список myListBox. Предполагается, что файл test.txt существует и содержит несколько элементов, разделенных знаками перехода строки.
Dim myListbox As ListBox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Dim ReadString As String
Dim iFr As Short
Dim sTmp As String
ReadString = CurDir() & "\test.txt"
iFr = FreeFile()
FileOpen(iFr, ReadString, OpenMode.Binary)
sTmp = Space(FileLen(ReadString))
FileGet(iFr, sTmp)
FileClose(iFr)
Dim strRecords() As String : strRecords = Split(sTmp, vbCrLf)
'Clear the listbox
MyListbox.Items.Clear()
Dim lngRecord As Long
For lngRecord = LBound(strRecords) To UBound(strRecords)
myListbox.Items.Add(strRecords(lngRecord))
Next lngRecord
End Sub