Функция FileRead

 ↑  ←  Описание функции


FileRead

Считывает данные из файла, весь или указанное количество символов/байтов.

FileRead ( "filehandle/filename" [, count ] )

Параметры

filehandle/filename Дескриптор файла, возвращённый функцией FileOpen(). Также, в качестве этого параметра можно использовать строку с именем файла.
count [необязательный] Количество символов/байтов для чтения. См. примечания.

Возвращаемое значение

Успех:Возвращает прочитанные данные. @extended равен числу прочитанных символов (или байтов).
Особенность:Устанавливает значение @error равным -1 при достижении конца файла.
Ошибка:Устанавливает значение @error равным 1, если файл не открыт в режиме для чтения или произошла какая-либо другая ошибка.

Примечания

Если параметр count отрицательный или не определён, то читает весь файл с текущей позиции.

Если в качестве первого параметра будет передан путь к файлу, а не его дескриптор, то во время вызова функции файл будет открываться, а по завершении её работы - закрываться. При работе с большими текстовыми файлами это может оказаться намного медленнее, чем использование дескриптора файла.
Обратите внимание, что не надо смешивать использование дескрипторов файлов и имён файлов. Т.е. не надо сначала использовать FileOpen() для открытия файла, а потом использовать имя файла в этой функции. Используйте либо дескриптор, либо имя файла в своих программах, но не оба вперемешку!

AutoIt может корректно считывать текст как из файлов в кодировке ANSI, так и в кодировке UTF16/UTF8.

Файл может быть прочитан как бинарные данные (по байтам), используя FileOpen() с соответствующим флагом. В этом случае count определяет количество байт, а не символов. Слишком большое значение count может привести к остановке AutoIt с ошибкой выделения памяти.

См. также

FileOpen, FileReadLine, FileWrite, FileWriteLine, String, FileSetPos, FileGetPos

Пример

$hFile = FileOpen(@ScriptDir & '\FileOpen.au3', 0)

; Проверяет, является ли файл открытым, перед тем как использовать функции чтения/записи в файл
If $hFile = -1 Then
    MsgBox(4096, "Ошибка", "Невозможно открыть файл.")
    Exit
EndIf

; Читает по 5 символов за каждый шаг цикла, пока не будет достигнут конец файла EOF
While 1
    $sChars = FileRead($hFile, 5)
    If @error = -1 Then ExitLoop

    If MsgBox(1, "Прочитанный символ:", $sChars) = 2 Then ExitLoop
WEnd

FileClose($hFile)