Функция 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

Категория

Файлы