Домой Классы Статические функции Перечисления (ENUM) Структуры (STRUCTURE)

{File_stream}


(включая защищенные члены)

CLASS {File_stream} , BYTES, DESTRUCTORS, NATIVE, TESTED(76) :


Класс для работы с файлами через потоки (класс {Stream}).


IMPORT : {Stream} , {File_path} .

BASE CLASS {Stream} .



--------------------------------------------------------- 'поля для чтения'

INT Handle|_of_file_stream_object , READ

Дескриптор файлового объекта.


STR Path|_of_file , READ , INIT

Путь открытого файла.


{mode_file} Mode|_file_opened , READ , INIT

Режим открытия файла.


 

ENUMERATION {mode_file|_stream} :

        'READ|_FILE' ,

        'WRITE|_FILE' ,

        'READ_WRITE' ,

        'READ_ANYWAY|_even_if_file_already_opened_in_another_process' .


Перечисление возможных режимов открытия фала.


FUNCTION Read_file_stream (
     
STR Path|_to_file ) ==> {File_stream} , NEW


Создает поток для чтения файла.


FUNCTION Anyway_read_file_stream (
     
STR Path|_to_file ) ==> {File_stream} , NEW



FUNCTION Write_file_stream (
     
STR Path|_to_file ,
     
BOOL Can_read ) ==> {File_stream} , NEW


Создает поток для записи в файл. В случае Can_read = TRUE, существующий файл открывается не обрезанным, с позиции 0, и допускается переместить указатель в любое место в файле, и выполнить чтение или запись байтов.


----------------------------------------- 'размер потока, позиция в потоке'

   

OVERRIDE Size ==> {Long_int}.{long}


Размер потока = размеру файла.


FUN get_Size (
     
INT Handle|_of_file_stream ,
     
BOOL Is_closed|_stream ,
     
INT lo_hi|_values [] ) , NATIVE



OVERRIDE Position ==> {long}


Позиция в потоке = позиция в файле.


FUN get_Position (
     
INT Handle|_of_file_stream ,
     
BOOL Is_closed|_stream ,
     
INT lo_hi|_values [] ) , NATIVE



OVERRIDE Set_pos (
     
{long} New|_position ,
     
{Stream}.{disp} Disp|osition_from )


Перемещение текущей позиции в файле.


FUN do_Set_pos (
     
INT Handle|_of_file_stream ,
     
INT New_lo|_position ,
     
INT New_hi|_position ,
     
{disp} Disp|osition_from ) , NATIVE



OVERRIDE Ended ==> BOOL


TRUE, если текущая позиция за пределами файла.


---------------------------------------------------------------- 'закрытие'

 

OVERRIDE Close , REPLACE


Закрытие потока и файла.


FUN do_Close ( INT Handle|_of_file_stream ) , NATIVE



OVERRIDE Closed ==> BOOL


TRUE, если файл уже закрыт. Нельзя выполнять никакие операции с закрытым потоком данных.


---------------------------------------------------- 'чтение/запись байтов'

  

OVERRIDE Load_bytes (
     
BYTE Dest|ination [] ,
     
INT Count|_bytes_read ) ==> BOOL


Реализация метода Load_bytes для файлового потока. Загружается максимум Count байт в массив Dest (который предварительно очищается). Значение TRUE возвращается, если удалось загрузить хотя бы один байт. Обыччно, байтов загружается меньше только когда курсор был близко к концу файла. Но не исключены и другие причины.


OVERRIDE Read_bytes ( BYTE Dest|ination [*] ) ==> INT


Реализация метода Read_bytes для файлового потока: чтение данных в фиксированный массив Dest. Возвращается количество прочитанных байтов.


FUN do_Read_bytes (
     
INT Handle|_of_file_stream ,
     
BYTE Dest|ination [*] ) ==> INT , NATIVE



OVERRIDE Save_bytes ( BYTE Source|_bytes [*] ) ==> INT


Реализация метода Save_bytes для файлового потока: запись данных из фиксированного массива Dest. Возвращается количество записанных байтов.


FUN do_Write_bytes (
     
INT Handle|_of_file_stream ,
     
BYTE Source|_bytes [*] ) ==> INT , NATIVE


END