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


FileRead

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

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

Параметры

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

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

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

Примечания

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

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

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

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

Функцию можно подключить через команду exect

См. также

FileOpen, FileReadLine, FileWrite, FileWriteLine

Примеры:
 Как создать кнопку?


exect=FileRead('D:\TC~~IMAGE\test.htm') GLOBALEXECT<a> ;; пример чтения файла

exect=FileRead(EnvGet('COMMANDER_PATH')&'\WinButtonBar.ini') GLOBALEXECT<a> ;; пример чтения файла с относительным путём

exect=$var_h=FileOpen('c:\Test\1.txt',16)||$var_b=FileRead($var_h,5)||FileClose($var_h) GLOBALEXECT<a> ;; пример считывания 5 байтов из файла

exect=$var_sp='c:\Test\1.txt'||$var_st=FileRead('$var_sp')||$var_h=FileOpen('$var_sp',2)||FileWrite($var_h,'Строка1'&'$var_st')||FileClose($var_h) GLOBALEXECT<a> ;; пример записи в начало файла

exect=$var_a1=StringSplit(FileRead('%P%N'),'~~',1) GLOBALEXECT<a> ;; пример разбивки текстового файла в массив по пробелам

exect=_ViewValues(FileRead('%P%N'),'%P%N') ;; просмотр содержимого файла под курсором

exect=_ViewValues(FileRead('%P%N'),'%P%N',@DesktopWidth,@DesktopHeight) ;; просмотр содержимого файла под курсором, окно во весь экран

exect=_ViewValues(FileRead('%WL'),'"%P"',600,500,0,0,-1,14,'FFFF00','050000') ;; просмотр списка выделенных объектов с различными настройками окна

exect=$var_h=FileOpen('%P%N',16)||$var_s=BinaryToString(FileRead($var_h),4)||FileClose($var_h)||_ViewValues('$var_s') ;; пример считывания данных файла под курсором в кодировке UTF-8

exect=$var_s=##[input=BOX73]||$var_ar=StringRegExp(FileRead(@CRLF&'C:\dictionary.txt'&@CRLF),'[\r\n](['&'$var_s'&']+)[\r\n]',3)||_ViewValues($var_ar)||$var_s=_ArrayToString($var_ar,@CRLF) bufsr=##$var_s ;; отправить в буфер обмена все слова, составленные из введённых в диалоге букв, которые входят в состав словаря dictionary.txt (В список входят слова, с перестановкой всех букв заданного набора с повторами букв без точной длины)
exect=$var_s=##[input=BOX73]||$var_ar=StringRegExp(@CRLF&FileRead('C:\dictionary.txt')&@CRLF,'[\r\n](['&'$var_s'&']{3,6})[\r\n]',3)||_ViewValues($var_ar)||$var_s=_ArrayToString($var_ar,@CRLF) bufsr=##$var_s ;; отправить в буфер обмена все слова, составленные из введённых в диалоге букв, которые входят в состав словаря dictionary.txt (В список входят слова, с перестановкой всех букв заданного набора с повторами букв и длина 5 символов)
exect=$var_s=##[input=BOX73]||$var_ar=StringRegExp(@CRLF&FileRead('C:\dictionary.txt')&@CRLF,'[\r\n](['&'$var_s'&']{5})[\r\n]',3)||_ViewValues($var_ar)||$var_s=_ArrayToString($var_ar,@CRLF) bufsr=##$var_s ;; отправить в буфер обмена все слова, составленные из введённых в диалоге букв, которые входят в состав словаря dictionary.txt (В список входят слова, с перестановкой всех букв заданного набора с повторами букв и длина от 3 до 6 символов)
exect=$var_s=##[input=BOX73]||$var_ar=StringRegExp(@CRLF&FileRead('C:\dictionary.txt')&@CRLF,'[\r\n](['&'$var_s'&']{[input=BOX74],[input=BOX75]})[\r\n]',3)||_ViewValues($var_ar)||$var_s=_ArrayToString($var_ar,@CRLF) bufsr=##$var_s ;; отправить в буфер обмена все слова, составленные из введённых в диалоге букв, которые входят в состав словаря dictionary.txt (В список входят слова, с перестановкой всех букв заданного набора с повторами букв и длина задаётся в диалоге)
exect=_ViewValues(StringRegExp(FileRead('%P%N'),'(?m)^([^\r\n]*)',3),'%P%N') ;; разбить содержимое файла под курсором в массив построчно и просмотр массива

exect=$var_a=StringSplit(FileRead('%P%N'),Null,2)||$var_a=_ArrayUnique($var_a) asave=var_a||"%P%O_sym.%E"||upd<1>||all|| ;; записать в именной файл с приставкой _sym уникальные символы содержимого файла под курсором

exect=$var_s=FileRead('%P%N')||$var_s=StringReplace('$var_s',@CRLF,Null)||$var_s=StringReplace('$var_s','~~',Null)||$var_a=StringSplit('$var_s',Null,2)||$var_a=_ArrayUnique($var_a)||_ArraySort($var_a,0,1) asave=var_a||"%P%O_sym.%E"||upd<1>||all||||code<1> ;; записать в именной файл с приставкой _sym уникальные символы содержимого файла под курсором в кодировке UTF-16 LE 1200, предварительно удалив переносы строк и пробелы

exect=$var_a=StringRegExp(FileRead('%P%N'),'(?ms)@font-face(?:[\s]+)?\{[^\{]+\}',3)||_ViewValues($var_a) ;; разбить в массив файл css под курсором все фрагменты @font-face

exect=$var_a=StringRegExp(FileRead('%P%N'),'(?ms)@font-face(?:[\s]+)?\{[^\{]+\}',3)||_ViewValues($var_a)||$var_a=_ArrayUnique($var_a)||_ViewValues($var_a) ;; разбить в массив файл css под курсором все фрагменты @font-face и удалить дубликаты фрагментов

sends=\<link\h+rel\=[\''|\']?[^>]+\>??1 exect=$var_a=_ArrayUnique(StringRegExp(FileRead('%P%N'),$GLOBALSENDS[1],3))||_ViewValues($var_a) ;; получить заданные отрезки файла под курсором и отобразить их в таблице

exect=$var_a=StringSplit(FileRead('%P%N'),'</p><p>',1)||_ViewValues($var_a) ;; разбить текстовый файл под курсором по фразе "</p><p>"

exect=$var_a=StringRegExp(FileRead('%P%N'),'(?m)((?:[^\r\n]+(?:\r\n|$)+){5})',3)||_ViewValues($var_a) ;; разбить текстовый файл под курсором по 5 строк

slist=%WL exect=$var_a=StringRegExp(FileRead('GLOBALSLIST<t>'),'(?m)((?:[^\r\n]+(?:\r\n|$)+){5})',3) GLOBALEXECT<a> ;; разбить пути выделенных объектов на группы по 5

slist=%WL exect=$var_a=StringRegExp(FileRead('GLOBALSLIST<t>'),'(?m)((?:[^\r\n]+(?:\r\n|$)+){1,5})',3) GLOBALEXECT<a> ;; разбить пути выделенных объектов на группы по 5 + остаток (если выделено не кратно 5)

$GLOBALXXXXX=>StringSplit(StringTrimRight(FileRead('%WL'),2),@CRLF,1) GLOBALXXXXX<a> ;; получить список выделенных объектов

$GLOBALXXXXX=>StringSplit(FileRead('%P%N'),@CRLF,1) GLOBALXXXXX<a> ;; получить массив, разбив построчно текстовый файл под курсором

exect=MsgBox(4096+64,'Результат','Заданная~~фраза~~встречается~~в~~файле~~'&(StringSplit(FileRead('%P%N'),'привет',1)[0]-1)&'~~раз(а)') ;; получить количество раз встречающейся фразы в файле под курсором

exect=MsgBox(4096+64,'Результат','Фраза~~из~~буфера~~обмена~~встречается~~в~~файле~~'&(StringSplit(FileRead('%P%N'),ClipGet(),1)[0]-1)&'~~раз(а)') ;; получить количество раз встречающейся фразы из буфера обмена в файле под курсором

exect=$var_a=StringRegExp(FileRead('%P%N'),'(?m)^([^\r\n]+)',3) funvb=ArrayFilter|$var_a|cliptext|1|0 GLOBALFUNVB1<a> ;; получить из файла под курсором строки, в которых есть фраза из буфера обмена (без учёта регистра)

exect=$var_a=StringRegExp(FileRead('%P%N'),'(?m)^([^\r\n]+)',3) funvb=ArrayFilter|$var_a|cliptext|1|1 GLOBALFUNVB1<a> ;; получить из файла под курсором строки, в которых есть фраза из буфера обмена (учитывая регистр)

exect=$var_a=StringRegExp(FileRead('%P%N'),'(?m)^([^\r\n]+)',3) funvb=ArrayFilter|$var_a|cliptext|0|0 GLOBALFUNVB1<a> ;; получить из файла под курсором строки, в которых нет фразы из буфера обмена (без учёта регистра)

exect=$var_a=StringRegExp(FileRead('%P%N'),'(?m)^([^\r\n]+)',3) funvb=ArrayFilter|$var_a|cliptext|0|1 GLOBALFUNVB1<a> ;; получить из файла под курсором строки, в которых нет фразы из буфера обмена (учитывая регистр)


© Аверин Андрей для Total Commander Image  Averin-And@yandex.ru