На главную страницу
Форум txt.version   




Статья :: Класс TFileStream

 

Класс TFileStream

Класс TFileStream позволяет создать поток для работы с файлами. При этом поток работает с файлом без учета типа хранящихся в нем данных (см. выше).

Полное имя файла задается в параметре FileName при создании потока:

constructor Createfconst FileName: string; Mode: Word);

Параметр Mode определяет режим работы с файлом. Он составляется из флагов режима открытия:

  •  fmCreate — файл создается;
  •  fmOpenRead — файл открывается для чтения;
  •  fmopenwrite — файл открывается для записи;
  •  fmOpenReadWrite — файл открывается для чтения и записи.

И флагов режима совместного использования:

  •  fmShareExciusive — файл недоступен для открытия другими приложениями;
  •  fmShareDenyWrite — другие приложения могут читать данные из файла; 
  •  fmShareDenyRead — другие приложения могут писать данные в файл;
  •  fmShareDenyNone — другие приложения могут производить с файлом любые операции.

Для чтения и записи из потока используются методы Read и write, унаследованные от класса THandleStream:

procedure TForml.CopyBtnClick(Sender: TObject);

 var Streaml, Stream2: TFileStream;

IntBuf: array[0..9] of Integer/begin

if Not OpenDlg.Execute then Exit; 

try

Streaml := TFileStream.Create(OpenDlg.FileName, fmOpenRead);

 Streaml.ReadBuffer(IntBuf, SizeOf(IntBuf));

 try

Stream2 := TFileStream.Create('TextFile.tmp', fmOpenWrite); 

Stream2.Seek(0, soFromEnd);

Stream2.WriteBuffer(IntBuf, SizeOf(IntBuf));

 finally

Stream2.Free;

 end; 

finally

Streaml.Free;

 end;

 end;

Обратите внимание, что в данном фрагменте кода функция seek используется для записи данных в конец файлового потока.

При необходимости копирования одного файла в другой целиком используется метод CopyFrom, унаследованный от класса Tstream:

procedure TForml.CopyBtnClick(Sender: TObject);

 var Streaml, Stream2: TFileStream; 

begin if Not OpenDlg.Execute then 

Exit;

try

Streaml := TFileStream.Create(OpenDlg.FileName, fmOpenRead);

Stream2 := TFileStream.Create('Sample.tmp1, fmOpenWrite);

Stream2.Seek{0, soFromEnd);

Stream2.CopyFrom(Streaml, Streaml.Size);

 finally

Streaml.Free;

Stream2.Free; 

end;

 end;

Обратите внимание, что в данном случае идя определения размера передаваемого потока необходимо использовать свойство stream, size, которое дает реальный объем данных, содержащихся в потоке. Функция sizeof (stream) в этом случае даст размер объекта потока, и не более того.

 

Класс TFileStream

страницы в данном разделе 
 ГЛАВА 9  ГЛАВА 9 Файлы и устройства ввода/вывода
 Использование файловых переменных. Типы файлов  Операции ввода/вывода
 Ввод/вывод с использованием функций Windows API  Отложенный (асинхронный) ввод/вывод
 Контроль ошибок ввода/вывода  Атрибуты файла. Поиск файла
 Потоки  Базовые классы TStream и THandleStream
 Класс TFileStream  Класс TMemoryStream
 Класс TStringStream  Оповещение об изменениях в файловой системе
 Использование отображаемых файлов  Резюме


Разделы
Околокомпьютерная литература (375)
Программирование (102)
Программы (75)
ОС и Сети (49)
Интернет (29)
Аппаратное обеспечение (16)
Базы данных (6)

Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)

PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C





 
©  programming-lang.com  справочник программиста