Иллюстрированный самоучитель по Windows2000



              

Потоки - часть 2


Очевидно, что команда dir не видит именованный поток, поэтому она показывает, что размер файла New_Stream.TXT равен 0. Однако это не так: dir показывает только неименованный поток. Размер именованного потока пользователю не показывается.

Проведем еще один эксперимент:

C:\fonts>

DIR New_Stream.TXT:New_Stream

Volume in drive С is diskl Volume Serial Number is 5021-EFE6

Directory of C:\fonts File not found

Из этого эксперимента видно, что команда dir не обладает средствами обращения к именованным потокам. Для просмотра содержимого именованного потока выполните следующую команду:

C:\fonts>

MORE < New_Stream.TXT: Nfcw_Sream

MTSORTS TTF 76 920 11.03.97 17:20 MTSORTS.TTF

MARIGOLD TTF 101 448 09.05.97 9:12 MARIGOLD.TTF

HPFONTS TER 648 868 09.06.97 14:02 HPFONTS.TER

HP7UP DLL 58 176 30.07.97 14:28 HP7UP.DLL

HPFONTS EDB 541 085 09.06.97 14:08 HPFONTS.EDB

FONTSMRT HLP 22 552 03.04.97 15:18 FONTSMRT.HLP

CORONET TTF 82 928 09.05.97 9:12 CORONET.TTF

CORSIVA TTF 105 156 11.03.97 17:20 CORSIVA.TTF

FONTSMRT EXE 817 984 30.07.97 14:30 FONTSMRT.EXE

Существует еще одно применение потоков. Предположим, что вы разрабатываете текстовый процессор. Корректируя файл, вы наверняка создадите временный файл, запишете туда все изменения, затем, когда наступит момент сохранить их, уничтожите оригинальный файл, его имя присвоите временному файлу и перенесете этот файл туда, где был расположен оригинальный файл. Весь процесс выглядит довольно просто. Однако следует помнить о том, что новый файл должен иметь то же время создания (time stamp creation), что и оригинальный файл. Кроме того, новый файл должен обладать теми же атрибутами, что и оригинальный файл. При сохранении изменений очень легко изменить один из атрибутов.

При использовании потоков все эти проблемы легко разрешаются. Все потоки в пределах одного файла имеют одни и те же атрибуты (время создания, безопасность и т. д.). Можно записывать изменения не во временный файл, а в именованный поток. Затем, при записи изменений достаточно переименовать именованный поток в неименованный, после чего с помощью средств NTFS удалить старый неименованный поток. Переименование потока должно быть выполнено в соответствии с принципом "все или ничего" (в виде транзакции — либо выполняются все операции, либо все остается в исходном состоянии).

Следует отметить, что при копировании файла, содержащего потоки, в файловую систему, не поддерживающую их (например, FAT на гибком диске), скопированы будут только данные неименованного потока.




Содержание  Назад  Вперед