Функция ReadFile
Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
ReadFile читает желаемое число байт из файла. Файл должен быть предварительно открыт с правом чтения. В случае синхронного ввода-вывода, функция начинает читать содержимое файла с текущей позиции указателя файла. При асихронном вводе-выводе используется структура lpOverlapped, определяющая точку начала чтения
- hFile
- Дескриптор файла для чтения
- lpBuffer
- Буфер, в который помещаются данные файла
- nNumberOfBytesToRead
- Число байтов, которые мы хотим получить из файла. Передается в lpBuffer
- lpNumberOfBytesRead
- Полученное реальное число прочитанных байтов
- lpOverlapped
- Если используется асихронный режим, структура OVERLAPPED определяет начало чтения из файла. В синхронном режиме используется 0
Пример
' Читаем строку из файла
' C:\autoexec.bat
Dim longbuffer As Long
Dim stringbuffer As String
Dim numread As Long ' число байт
Dim hFile As Long ' дескриптор файла
Dim retval As Long ' возвращаемое значение
' Открываем файл для чтения
hFile = CreateFile("C:\autoexec.bat", GENERIC_READ, FILE_SHARE_READ, ByVal CLng(0), OPEN_EXISTING, FILE_ATTRIBUTE_ARCHIVE, 0)
If hfile = -1 Then
Debug.Print "Невозможно открыть файл - возможно он не существует"
End ' выходим из программы
End If
' Считываем десять символов из файла
stringbuffer = Space(10)
retval = ReadFile(hFile, ByVal stringbuffer, 10, numread, ByVal CLng(0))
If numread = 0 Then ' достигнут конец файла
Debug.Print "Конец файла - не могу прочитать данные"
ElseIf numread < 10 Then ' считываем между 0 и 10 байтами
Debug.Print Left(stringbuffer, numread)
Else
Debug.Print "Начальная строчка файла: "; stringbuffer
End If
' Закрываем файл
retval = CloseHandle(hFile)
Смотри также
SetFilePointer, WriteFile
Категория
Файлы